iOS逆向工程(八):动态调试

iOS逆向工程(八):动态调试,第1张

1/进入目录

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

找到手机对应版本,点开dmg;拷贝debugserver备用

/usr/bin/debugserver

2/修改权限

导出权限

修改内容

编辑后将其合入debugserver【注意-S后面不要空格】

3/将编辑完成的文件放入手机的/usr/bin目录

电脑端 *** 作->

手机端 *** 作->如果有过 *** 作,需要删除debugserver

在Mac上打开命令行窗口,让10011端口与10011端口映射、10010与22端口映射

在Mac上新建命令行窗口,然后SSH登陆到手机

登录到手机后,启动手机的debugserver服务,让其与App建立交互

在Mac上新建命令行窗口

使用LLDB命令c,先让程序继续运行

测试

breakpoint使用

1、下断点

打印:

断点位置信息,执行便能在该处断住。

连续下多个断点:

运行 c 继续运行, n 单步执行, s 进入函数内部执行,finish执行到函数尾部。

2、查看断点列表

打印:

3、禁用断点

4、启用断点

5、删除所有断点

删除只能删除一组,不能单个删除

6、设置 selector

将为所有该方法设置断点

7、设置文件中的 selector 断点

8、设置带有相同字符串的方法断点

打印:

如上也给其他带有 Game 字符的类下了断点。

给某一个文件下的带有相同字符串的方法下断点:

bt、frame命令

1、查看函数相关信息,使用 p、down 追踪函数的调用和被调用关系

使用 bt 命令查看函数调用堆栈

2、查找方法的调用者及方法名称

methods、pviews

1、 methods 打印当前对象的属性和方法

2、 pviews 打印当前视图的层级结构

以上两个命令是 lldb 插件名中的命令。 chisel安装

……

HTML、JS、CSS的Web三件套,时下占据了项目的主要业务部分,原生和JS的交互必不可少,下面总结iOS调试Webview的两种方法:

1.在手机设置里,找到Safair浏览器,在高级里启用Web检查器;

2.Mac上Safair浏览器,在偏好设置高级选项底部勾选“在菜单栏中显示开发菜单”;

3.手机连接Xcode工程, *** 作App跳转到JS页面,点击Mac上的Safair浏览器,在开发选项下拉菜单中,找到手机名称对应的html页面即可进入调试器;

( 参考链接 )

1.使用brew安装 ios-webkit-debug-proxy

brew install ios-webkit-debug-proxy

若上面的命令不有效,尝试下面的命令安装

brew uninstall --force libimobiledevice ios-webkit-debug-proxy

brew install --HEAD libimobiledevice ios-webkit-debug-proxy

2.安装成功后,在终端输入下面的命令

ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html

若有问题,报错Could not connect to lockdownd. Exiting.: Permission denied,可输入下面的命令,再次尝试

sudo chmod -R 777 /var/db/lockdown/

3.保持终端命令连接状态,在chrome浏览器中打开 localhost:9221 ,点击真机选项;

4. *** 作App跳转到JS页面,下面两种方式均可进入调试器:

(1)在Mac的chrome中刷新页面,选中要打开的html连接,右键点击“复制链接地址”,新建标签页,在地址栏粘贴地址,按enter键进入;

(2)直接在谷歌浏览器地址栏中输入 chrome://inspect/#devices ,点击Target下方的inspect进入;

备注:

(1)手机上也要安装谷歌浏览器,否则终端可能无法连接到真机;

(2)复制JS页面地址时,不要用cmd+c快捷键,要右键单击“复制链接地址”,然后新建标签页,粘贴地址打开;

总结:

两种浏览器相比较,虽然Safair调试器打开方便,但容易卡住,有时无法查看JS的变量值,甚至打断点会闪退,建议使用Google Chrome浏览器调试方法。

一般没有引用 <UIKit/UIKit.h>等系统动态库时:

引用oc库时,会报错

解决方案:

其他解决方案,xcode命令行:

执行后,本地会多出一个文件,在 /private/tmp/msgSend-xxxx ,可以看到当前调用的所有方法。

添加方法: Project -> Scheme -> Edit Scheme ,在 Arguments 下可以添加运行时的环境变量( Environment Variables )


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12028034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存