动态调试其它APP的两种姿势:
1. 拿到可执行文件动态调试APP,有两种方案:
Code signing Entitlements中有一项很重要的key值,就是get-task-allow,
get-task-allow决定了这个app能否被Xcode调试。一般来说,上架了的程序,这个key值为空,默认为NO。
步骤:
1. ldid -e ./wework > ./wework.plist
2. 修改wework.plist 中的 get-task-allow:YES
3. ldid -Swework.plist ./wework
4. chmod 755 ./wework
5. 用开发证书重新打包并安装至越狱机上
1.1.1 我以企业微信为例子:
Xocde Attach wework进程
1.1.2 通过Xcode调试工具看UI界面:
由此可见:
1. 企业微信登录所在的控制器是:WWKWeChatLoginViewController
2. 点击微信登录按钮调用的方法是:loginButtonClicked:
通过Xcode查看界面UI
1.1.3 通过Hopper Disassembler工具查看loginButtonClicked:在内存中具体位置
Hopper Disassembler工具查看函数具体的内存地址
1.1.4 由于使用了ASLR技术,断点得加上一段偏移
breakpoint set - a 时得加上这一段偏移
image list -o -f | grep wework
breakpoint set -a 0x00000001009f8a88(hopper里的方法地址)+0x00000000000e4000(地址偏移)
断点打印成功
1.2.1 我以调试微信APP为例
步骤:
1. 先开个命令行转发端口: python tcprelay.py -t 22:10010
2. 再开个命令行转发端口: python tcprelay.py -t 10011:10011
3. 开个命令行登录手机:
3.1 ssh root@localhost -p 10010
3.2 debugserver *:10011 -a "WeChat"
4. 开个命令行登录手机:
4.1 ssh root@localhost -p 10010
4.2 实用cycript调试应用
5. 开个命令行使用LLDB:
5.1 lldb
5.2 process connect connect://localhost:10011
成功Attch 上微信APP
1.2.2 通过Reveal找到需要调试的视图
WechatIMG432.png
1.2.3 找到点击声音锁登录调用的函数onLastUserVoicePrintLogin:
点击声音锁登录调用的函数
1.2.4 通过Hopper Disassembler工具查看onLastUserVoicePrintLogin:在内存中具体位置
Hopper Disassembler工具查看onLastUserVoicePrintLogin:在内存中具体位置
1.2.5 由于使用了ALSR技术,所以断点应该这样打:
image list -o -f | grep WeChat
breakpoint set -a 0x000000010245e318(hopper里的方法地址)+0x00000000000f4000(地址偏移)
断点打印成功
网友评论