博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
写一篇最简单的加壳,介绍一下壳的原理(Shell)
阅读量:7051 次
发布时间:2019-06-28

本文共 1589 字,大约阅读时间需要 5 分钟。

hot3.png

新建一个fla,文档类为Doc.as,代码如下:

package {    import flash.display.Loader;    import flash.net.URLRequest;    import flash.display.MovieClip;    import flash.events.Event;    public class Doc extends MovieClip    {        //        var l:Loader = new Loader();        //                public function Doc()        {            if(stage){                add_to_stage();            }else{                this.addEventListener(Event.ADDED_TO_STAGE,add_to_stage);            }        }        //        private function add_to_stage(e:Event = null):void        {            l.loadBytes(new EmbedContent);            l.contentLoaderInfo.addEventListener(Event.COMPLETE,_on_complete);        }        //        private function _on_complete(evt:Event):void        {            this.addChild(l);        }    }}

然后新建一个EmbedContent.as,这个主要就是把要加载的swf转成字节,代码:

package {    import flash.utils.ByteArray;    [Embed(source="EmbedSWF.swf",mimeType="application/octet-stream")]    public class EmbedContent extends ByteArray    {            }}

运行即可生成Shell.swf,这个已经就是加壳的swf了。闪客或是asv都看不到实质的代码了。

这里只能看到自己写的壳子代码,而真实的代码为:

看一眼tag的结构:

看一眼haxe:

说白了,这种加壳就是把swf隐藏到一个标签里面。

下面说下,去壳:

最简单的一种:ASV这个工具:

再一种就是拿到这个data数据,保存CWS后面的数据即可,这个要懂swf的结构了。

FF 15是tag的类型,这个是长类型的,后面的4位A9 05 00 00 表示这个标签的长度,长度为:05A9,然后截取相应长度的字节即可,这个标签就拿出来了,然后CWS开始截取最后保存成.swf,就是想要的swf了。

这个例子很简单,但是这就是加壳的原理,就是把swf转成字节然后加载。可以拓展一下,把这个swf自己用个算法混掉,然后再把数据加载进来,再写一个解密算法,即可了。

但是同样别人也能只看你的解密算法就能还原回来。

再说一个高科技,内存提取的:

打开内存:

搜索FWS字符串,然后看版本,一个一个查找:

找到:

这个其实就是AVM虚拟机还原的swf,看文件大小,0A D9,截取这么多字节,保存就是去壳的SWF。

这文章算个入门吧,有空继续写点,难的。

转载于:https://my.oschina.net/zhyuliang/blog/206075

你可能感兴趣的文章
第5章 发布循环
查看>>
查询某软件所连接的外网IP地址
查看>>
Makefile编写示例:构建一个库
查看>>
[Machine Learning]Markov chain and Hidden Markov Models(HMMs)
查看>>
C# 修饰符的总结 default public private protected internal protectedinternal
查看>>
对于软件,我是认真的
查看>>
"https://open.gl/"教程之Transforms源码(freeglut版)
查看>>
接口自动化:pytest----环境搭建
查看>>
团队编程项目开发环境搭建过程
查看>>
[LeetCode]Integer to English Words
查看>>
springboot之模板
查看>>
Javascript 中 检查一个数组是否包含某对象
查看>>
5月20日工作日志(奇异森林完工部分截图)
查看>>
navicat for mysql 安装教程
查看>>
八,裁剪linux3.19.9内核,制作jffs2和yaffs2根文件系统
查看>>
java面试每日一题11
查看>>
CentOs 6.5设置使用私钥登录关闭ssh的密码登录修改ssh默认端口
查看>>
12-Python操作json
查看>>
最强NLP模型-BERT
查看>>
HTML5实现全屏
查看>>