iOS LLDB + debugserver 进行远程调试APP

来源:互联网 发布:js添加点击事件 编辑:程序博客网 时间:2024/05/16 03:21

要开始学习一些iOS逆向的一些东西,调试别人的app自然是必不可少的工作,这个时候调试利器GDBLLDB自然浮现在脑袋里。可是试验后发现用GDB调试并不好用,而且苹果推的也是LLDB,所以需要使用LLDB来进行调试工作。使用LLDB就不像使用GDB进行调试那么方便,使用GDB的话直接在Cydia里面安装好GDB之后,ssh到你的设备就可以开始工作了,使用LLDB远程调试你越狱设备上的APP稍微麻烦一点。


准备工作:

1.设备

一台越狱了的设备(装上OpenSSH)

一台装有XcodeMAC

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放在指定目录,里面创建了下面4key,都是YES

    • com.apple.springboard.debugapplications
    • run-unsigned-code
    • get-task-allow
    • task_for_pid-allow

 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


1 0