要开始学习一些iOS逆向的一些东西,调试别人的app自然是必不可少的工作,这个时候调试利器GDB和LLDB自然浮现在脑袋里。可是试验后发现用GDB调试并不好用,而且苹果推的也是LLDB,所以需要使用LLDB来进行调试工作。使用LLDB就不像使用GDB进行调试那么方便,使用GDB的话直接在Cydia里面安装好GDB之后,ssh到你的设备就可以开始工作了,使用LLDB远程调试你越狱设备上的APP稍微麻烦一点。
准备工作:
1.设备
一台越狱了的设备(装上OpenSSH)
一台装有Xcode的MAC
2.环境
2.1,iOS设备与Mac接入同一个局域网中
2.2使用ssh登录,ssh root@clientIP,输入密码,默认都是alpine
2.3 ls /Developer/usr/bin
查看是不是有debugserver,如果没有,说明你的手机没有加入开发设备,那么你可以将设备连接到mac,打开Xcode,添加设备,完成之后,debug server就是自动copy到设备中的刚才提到的目录
2.4 将设备中的debugserver拷贝到mac上的指定目录(例如:/Users/xxx/app)
cd /Developer/usr/bin
scp debugserver root@macIP:指定目录
2.5 重新签名上面的debugserver,重新打开另外一个终端Terminal
2.5.1 用xcode创建了的 entitlements.plist放在指定目录,里面创建了下面4个key,都是YES。
2.5.2 进行签名
cd/Users/xxx/app
codesign -s - --entitlements entitlements.plist -f debugserver
2.5.3 签名完成之后将debugserver复制到你的越狱设备里,但是最好不要复制到你设备上的debugserver所在的目录,可以执行如下命令
scp debugserver root@clientIP:/usr/local/
3.准备调试
3.1 返回ssh登录设备的终端,或者是重新登录设备
3.2 打开你想要调试的APP
3.3 执行 ps aux找到自己想要调试的APP的信息,示例如下:
mobile 4113 0.1 1.4 800256 13900 ?? Ss 3:24PM 0:00.38 /var/mobile/Containers/Bundle/Application/9EED7F27-CC78-4EEC-9BDB-132ED541520E/TOCRDemo.app/TOCRDemo
3.4 在debugserver所在的目录下执行./debugserver *:(PID) -a "app-name”,示例如下:
./debugserver *:4113 -a "TOCRDemo"
显示信息如下,表明进入等待远程调试状态:
ebugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-340.3.51.1
for arm64.
Attaching to process TOCRDemo...
Listening to port 4113 for a connection from *...
3.5 在新建Terminal中输入命令:lldb
进入lldb环境之后,输入命令:process connect connect://ClientIP:Port,此处的Port是调试的APP在设备上运行的PID
显示以下信息表明远程连接成功
5.调试开始
LLDB官方说明:LLDB
至此,你需要学习一下汇编咯。
可以简单参考 iOS 逆向ARM