美文网首页
iOS 逆向:动态调试其它APP的两种姿势

iOS 逆向:动态调试其它APP的两种姿势

作者: 许久__ | 来源:发表于2021-06-14 13:49 被阅读0次

动态调试其它APP的两种姿势:

1. 拿到可执行文件动态调试APP,有两种方案:

1.1 通过开发证书签名,修改应用的权限文件,用Xcode直接Attach应用进程ID
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 通过Debugserver + Reveal + LLDB调试APP

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(地址偏移)
断点打印成功

相关文章

网友评论

      本文标题:iOS 逆向:动态调试其它APP的两种姿势

      本文链接:https://www.haomeiwen.com/subject/rrfoeltx.html