求助看看这是什么壳用什么软件能脱壳

/thread--破文中的第一部分就是不管三七二十一把程序丢进去脱壳以及反混淆。可是你真的明白de4dot背后做了些什么吗?你对.net文件格式真的了解吗?如果这么好的开源工具大家都不去研究代码,实在是令人惋惜,以至于还在有人在论坛询问 Reactor最新版怎么脱的问题,也有的在论坛上断言MaxtoCode可以难倒99%的人……我想善于从基础学起,善于研究大神源码,真正搞懂de4dot背后所做的工作,那么这些问题都不算什么问题。这篇文章有点长,希望你能细心读下去,而且我相信你一定会有很大的收获,请不要纠结于为什么照着我的教程做也不能脱掉类似的其他壳,你应该扪心自问,教程的每一步你都理解了吗?你能否利用这些知识进行变通?希望你不要做一个伸手党,而是去真正去理解工具背后的工作。

虽然de4dot很牛,但总有些壳它也是无论为力的,比如我们今天要讨论的这个。由于我很长时间都没有上论坛,因此错过了很多精彩的.net内容,还好希望现在还不晚。

的多年研究,出现上图右边所示的错误:“试图使用链地址信息(有2个以上的节或有一个TLS节的IAT)加载无法验证执行文件”,多半是由于入口点位置不正确引起的。而乱码则是由于dump过程中,没有处理好字符串解密函数导致的。因此上图中Falcon_2015在第3步解释的不准确,真实情况是:DNGuard脱壳和乱码没有任何关联,也就是说,就算是乱码,DNGuard也是可以被脱壳的。一个是字符串解密函数的问题,一个是入口点不正确的问题,这分别是两个问题,且没有关联。

我们来用CFF打开脱壳后的程序再次观察一下:

再研究研究字符串怎么解密。看原帖第三楼,画眉的回复:

画眉原文:“你需要Hook Jit 解码”。
Jit的字样已经吓尿…….是的,在dump过程中,由于没有考虑到字符串解密函数的原因导致dump后出现乱码。这也是DNGuard加载双壳的一大特征,根据我最近分析各种画眉大侠的unpackme的经验,他比较喜欢的做法就是先用DNGuard加一层强壳,且在此壳中使用字符串加密。然后外面再加一层壳,当你脱去外面这层壳的时候,打开程序后字符串就会变成乱码。不相信的人,你们自己去用DNGuard加两层壳试一试。
说句实话,我在这里也卡了很久。但是我不甘心,我想做剩下10%的人可以继续解密,我是一个工具党,但是我找遍网络也没有找到合适的工具来解决这个问题。每次当我找不到工具的时候,我就会决定自己写个工具,便把de4dot的源代码重温了一遍,终于基于de4dot源码开发出一个小工具。为了方便大家今后遇到同样的问题,我直接把工具奉上。
这个工具除了可以解决DNGuard的乱码问题外, 还可以修复入口点,是的,可以修复任意.net程序被破坏的掉的入口点 。我已经考虑到4种被破坏入口点的情况,所以通用性应该还是不错的。原理嘛,画眉也说了:   你没看懂也没关系,用了我这个工具你再也不用为无法修复.net入口点而苦恼了。

如下图,把两个勾都选上,注意在修复乱码过程中,需要选择未脱壳的原始文件。

点击开始修复,修复完成后,再用CFF打开看看。

请按照上图所示,将Debug Directory RVA的值直接修改为0,然后保存。
运行再次修复的程序看看。

乱码问题解决了,入口点问题也解决了。但是,别忘了,我们才刚刚把第一层壳脱完。好在这个程序是DNGuard的试用版,因此直接用已有的工具脱壳DNGuard HVM Unpacker。
啊,脱壳失败了,报错。一个新的错误,但是已经不是“试图使用链地址信息(有2个以上的节或有一个TLS节的IAT)加载无法验证执行文件”的错误了。

成功了!!!!!!!赶紧拿出ILSpy来看看,源码出现了!!!
激动!!!!!太激动了!!!

出错了!!!!What’s the Fuck!!!!!!!对不起,我骂人了,因为被折腾的受不了!!!!

经常搞.net开发的人应该知道,这个问题多半是由于配置文件或者资源不正确引起的。用CFF看看资源情况:

脱壳工具将部分资源弄丢了,导致无法运行。修复这里的资源很麻烦,还需要重新定位RVA地址。本文将介绍一种快捷的办法,那就利用微软自带的ILDASM和ILASM,先进行反编译,再编译回去。
但是我们发现在编译回去的过程中,遇到了如下错误。

下载次数: 359)  (注意,原始unpackme杀毒软件报毒,为安全起见,请在虚拟机下运行。非本人软件,不能保证其安全性)

}

我们将这个黑色的东西拷贝到我们的mac上的/usr/local/bin目录下,其实我们终端在执行命令的时候默认会去/usr/bin目录下和/usr/local/bin下去查找,但是/usr/bin目录是不允许你加东西的,就算是管理员权限也不行。这就解释了为什么我们运用cd是可以的,如图

注意:class-dump只能导出头文件 下面是我的演示:

他还原的虽然不是100%那么准但是大体上看差不多了(左边是还原的,右边是真实的源码)

简单来说我们的oc经过编译会生成汇编语言,汇编语言经过编译最后生成机器语言,其中机器语言和汇编语言是一一对应的也就是说,我们的机器语言可以反编译生成汇编语言。

但是从上图中也看到了,我们的汇编是不能生成我们唯一的oc语言的,怎么办?其实我们可以借助工具来将我们的汇编生成oc,相当于是伪代码,这样的话我们可以大概来研究一下别人的代码,如果我们完全100%还原oc代码个人觉得也不太现实,因为苹果的加密机制我觉得做的还是很ok的。

  • ),一些快捷键的展示如下:

  • 我随便找一个可执行的文件看下:

  • 注意:值得说的是github上machview这个工具有一些bug,如果你想要一个没有bug的请联系我,我这有直接是dmg的。

  • 或者我们安装这个工具也是可以的:

    一般来说我们都是安装的第一个工具,怎样安装如下:

  • 如果你输入Clutch出现了这样的界面说明你安装成功了

  • 那么我们怎样可以查看是否脱壳了呢?

    使用命令(前提是已经连接上手机,并且用mac控制手机,我前面的文章有说到)

如果出现了这样的app就说明你是appstore安装的或者是没有脱壳的,因为这样的ipa即使你找到可执行文件你还是解析不出.h文件或者.m文件不是汇编语言。

  • 注意: 除了上述的错误你可能还会出现没有签名的错误,那么你需要对你的dumpdecrypted.dylib进行签名,我们现在已经知道dumpdecrypted.dylib在/var/root目录下,在此目录下执行命令:

这样的话就签了名了,在执行上面的命令应该就能成功了,说明:有时候Clutch 会破解失败这个dumpdecrypted 还是值得拥有。

1.首先查看手机中哪些app是加了壳的(我以我自己手机为例) 执行命令:

  1. 输入app的序列号或者app的BundleId号(<序列号>)进行生成ipa文件,执行命令(包越大等待的时间就越长)

我可以到手机中找到那个ipa包,因为他已经把目录打印出来了。拿到他的ipa包之后直接将ipa的包改为zip,然后直接解压缩,在payload这个文件下就是包文件。通过显示包内容找到他的可执行文件,我们用class-dump 进行破解即可获取头文件,用Hopper Disassembler找他的.m文件(前面的文章有说到)。 这是图片展示的Clutch的使用

}

我要回帖

更多关于 软件脱壳有什么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信