首页 > 系统 > iOS > 正文

iOS逆向:微信逆向及动态库开发过程中的坑

2019-11-06 09:41:42
字体:
来源:转载
供稿:网友

最近对 iOS 逆向很感兴趣,想学习下如何通过逆向app、分析源码注入动态库的方式来给别人的软件增加些酷炫的功能。决定拿微信练手。

先上几个教程:

移动App入侵与逆向破解技术-iOS篇

给微信加 hook 尝试记录

一步一步实现iOS微信自动抢红包(非越狱)

 

然而,真正开始学习后,发现做逆向的人本来就不多,而且由于法律法规问题,导致很多教程都含糊其辞、较为浅显。而随着 iOS 系统的更新,安全性也越来越强,以往教程中的不少逆向工具,都失效或者改变了使用方法。

教程中已有的步骤,本文不再累述;仅记录我踩过的一些坑。

 

#【第一个瓶颈】ios9.3 后,cycript 由于权限问题无法 hook 进程

*** _syscall(connect(socket, reinterPRet_cast<sockaddr *>(&address), sizeof(address))):../Handler.cpp(169):CYHandleSocket [errno=1]*** _assert(system(inject.str().c_str()) == 0):../Inject.cpp(119):InjectLibrary

解决 --》 使用一部 iOS 8.1.1 的 iPod 来 hook

 

# bundlemobile 4021 0.9 9.8 722448 50360 ?? Ss 12:50PM 0:11.31 /var/mobile/Containers/Bundle/application/EF82C83B-6CCA-4274-8313-AA15C8B8D042/WeChat.app/WeChat

 

# Data@"/var/mobile/Containers/Data/Application/0E291049-58E9-41E8-B38F-B01C7C5B6645/Documents"

 

# dylid_insert 指令,执行完后,在本目录下得到 WeChat.decrypted 文件。DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/0E291049-58E9-41E8-B38F-B01C7C5B6645/Documents/dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/EF82C83B-6CCA-4274-8313-AA15C8B8D042/WeChat.app/WeChat

 

# 将 WeChat.decrypted 文件复制到本地。但后来发现,mac端的 class-dump 是64位的,和iPod不适配,故无法成功将头文件dump出来。于是决定在iPod上进行 class-dump。scp WeChat.decrypted liqiyu@172.18.67.185:~/Desktop

 

# 使用 class -dump 把头文件暴露出来class-dump -s -S -H ./WeChat.decrypted -o ./header6.3-arm64

 

# 将 ipod 上的头文件复制到电脑本地(电脑需要先开启远程登录)scp -r header6.3-arm64 liqiyu@172.18.67.185:~/Desktop/wechat

 

# 安装 iosOpenDev参考:《在xcode7下安装iOSOpendev,并使用iOSOpendev模板编译iOS9钩子》( http://bbs.iosre.com/t/xcode7-iosopendev-iosopendev-ios9/1963 )、《iOSOpenDev安装》( http://www.jianshu.com/p/29580725707a )安装 iOSOpenDev 时,我根据教程先装了 MacPort, 装完后 还不能直接执行 sudo port -v selfupdate 指令更新 MacPort,而要先配置环境变量。详见此处第2.5条 ( https://guide.macports.org/#installing.shell )。安装 Xcode Command Line Tools

 

# 查看指定页面 ui 层级结构UIApp.keyWindow.recursiveDescription().toString()

 

# make package install 坑

动态库写完后,需要进行package install。运行发现报错。➜ wxopenredbag make package install==> Error: The vendor/include and/or vendor/lib directories are missing. Please run `git submodule update --init --recursive` in your Theos directory. More information: https://github.com/theos/theos/wiki/Installation.make: *** [before-all] Error 1(按说明,到 theos 目录运行 git submodule update --init --recursive 指令就好)

➜ wxopenredbag make package install> Making all for tweak WXOpenRedBag…==> Preprocessing Tweak.xm…Tweak.xm:2: error: %orig does not make sense outside a methodmake[3]: *** [/Users/liqiyu/Work/Hackor/myCode/WeChat/wxopenredbag/.theos/obj/debug/armV7/Tweak.xm.b8bea91d.o] Error 22make[2]: *** [/Users/liqiyu/Work/Hackor/myCode/WeChat/wxopenredbag/.theos/obj/debug/armV7/WXOpenRedBag.dylib] Error 2make[1]: *** [internal-library-all_] Error 2make: *** [WXOpenRedBag.all.tweak.variables] Error 2(文件中,有俩方法是自动生成的,如:- (void).cxx_destruct { %log; %orig; }该方法方法名以"."开头,显然有问题。把"."删除后即可成功 install)

 

# 连接xcode打开越狱机器控制台,查看 logify 输出打开Xcode->Window->Device→你的设备,下面有Log显示,但未找到微信logify输出

 

# 反汇编工具 hooper 查看偏移量用 hooper 打开之前砸壳后获得的 WeChat.decrypted 文件,并在左侧框搜索 addMessageNode 方法注意:1、要把 WeChat 文件拖入 hooker 中来打开,若使用 hooker 的 File -> open 来打开则会打开失败!2、打开时会让你选择armv7或者arm64,这需要根据你越狱手机的cpu类型来选,一定要和你的手机一致!

 

# 通过lldb远程调试iOS App参考:http://www.cnblogs.com/csutanyu/p/3653252.html./debugserver *:微信的pid -a WeChat另开一个终端,输入3条指令:lldbplatform select remote-iosprocess connect connect://192.168.2.101:微信的pid然后输入指令获取进程基地址:image list -o -f输入:br s -a '0x000c5000+0x01657fb4'


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表