在class-dump工具一文中了解到,如果要dump苹果商店下载的app,通过dump失败,因为AppStore里的app是被苹果加密过的,可执行文件被套上了一层“外壳”,而class-dump无法作用于被加壳过的app,此时就需要先将加壳过的app进行砸壳处理,dumpdecrypted就是一款非常好使的砸壳工具。 dumpdecrypted的获取方式
下载地址:
https://github.com/stefanesser/dumpdecrypted/archive/master.zip
下载后解压,然后make编译即可得到我们砸壳要用的“榔头”dumpdecrypted.dylib:
ios逆向工具--dumpdecryptedX
ios逆向工具--dumpdecrypted
另一种获取方式,是直接在ios上的cydia中进行安装即可,安装后的“榔头”文件所在路径为:
/usr/lib/dumpdecrypted.dylib。
好了,榔头拿到手,现在开始砸壳了,就拿我们常用'微信'app来练手吧!
先找到微信二进制文件所在的路径,有个简单的方法,就是在ios上打开微信,然后ssh到ios上,然后通过ps -e来查看微信所在路径:
ios逆向工具--dumpdecrypted
ok找到了WeChat.a pp的所在路径,(此时如果把WeChat二制文件copy出来,然后class-dump,则只能dump出一个CDStructures.h文件,说明加壳了导致dump失败)接下来还要找到WeChat的Document路径。一个快捷的方法是利用cycript命令来查找(前提是您已在cydia中安装了cycript插件)。ios逆向工具--dumpdecrypted
ok,能过cycript里执行NSFileManager命令找到了WeChat的Documents路径。
接下来就可以开砸下了:
ios逆向工具--dumpdecrypted
上面的砸壳步骤大致为:
1、将上面得到“榔头” dumpdecrypted.dylib拷贝到此Documents路径下;
2、然后用DYLD_INSERT_LIBRARYS=dumpdecrypted.dylib /Application/Path/to/wechatApp进砸壳,成功后会在Documents目录下生成砸壳后的文件:WeChat.decrypted。
至此,成功将微信app砸壳,接下来就可以WeChat.decrypted拷贝出来,然后进行dump啊之类的分析!OVER!
ps:有时会遇到一些app,砸壳不成功。因为app做了一些防砸壳的处理。从DYLD_INSERT_LIBRARIES可以看到砸壳的就是通过insertLibrary,向app中注入了dumpdecrypted.dylib,而一些app会通过在 Xcode的Build Settings中找到“Other Linker Flags”在其中加上-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null指令来绕过 dylib加载额外的第三方库,从而阻止诸如砸壳、cycript等的注入。此时只要用iHex、MachOView之类的工具打开WeChat可执行文件,然后将其中的__restrict全部修改成别的字符串即可。
具体步骤可以参考:http://bbs.iosre.com/t/tweak-app-app-tweak/438
网友评论