GDB来调试IPHONE步骤
来源:互联网 发布:淘宝好做吗 编辑:程序博客网 时间:2024/05/16 11:43
IPHONE手机必须越狱:
安装以下插件是必需的:
>OpenSSH,作为SSH服务端;
>GNU Debugger(gdb调试工具):在这个源中cydia.radare.org,版本为1708,低版本不支持ios4.3+。
>adv-cmds:ps命令可以查看进程信息;
>darwin cc tools:otools可以查看可执行文件的详细信息;
>Link Identity Editor:ldid签名;
用ITOOLS开通SSH端口22,用SECURECRT就可以登陆IPHONE了,默认用户和密码root alpine
熟悉gdb调试:
记住以下常用命令就足够了:
ps -ax:查看当前所有进程
Gdb -p pid:附加到目标进程
如果太长,可以用SET height 10 来指定显示范围
Info sh:这个可以查看程序代码在内存中的偏移地址
i mach-region 0 显示基址
在手机VAR/ROOT目录创建.gdbinit文件,方便一些宏命令的使用
i mach-region 0
display /i $pc | $cpsr.t --显示指令
define bbvm --基址
set $__bbvm=$arg0-(0x6c000-0x68000)
end
define bb --下断
b *($__bbvm+$arg0)
end
define pp --打印出对应基址的地址
Print /a ($arg0-$__bbvm)
end
define writechar --改写内存CHAR
set objc-non-blocking-mode off
set $_count=0
while ($_count<24)
set {char}($arg1+$_count)= *(unsigned char*)($arg0+$_count)
set $_count++
end
end
writechar "jnrCpfiiWrwtl6rYSvTwMg==" $r0+84
一些基本指令:
Break:下断点
display /i $pc | $cpsr.t:显示要执行的下一句指令
disassemble $pc $pc+10
continue(或c):继续执行;
Nexti(或ni):单步执行一条汇编指令(有些程序一执行就直接跳出函数)
Po $rN(N为数字,打印寄存器存储的对象,寄存器实际存储的是对象的地址)
Print $rN(打印寄存器中的值)
Set $rN=xxxx(给寄存器赋值)
Set $r5=[[[NSString] alloc] initWithString:@"xxxxxx"]
(gdb) set {unsigned int}0x8048a51=0x0
(gdb) set *(unsigned int*)0x8048a54=0x55aa55aa
打印字符串
def loadlua
set $uni = $r3
while (*$uni)
printf "%c", *($uni++)
end
end
x /ubx **** 显示内存地址
查寄存器
i r $r0 $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12
查看内存值
ldr r4, [r2, #0x20],就是关键的地方了。那么如何看内存地址里面的值呢? i r 命令只能查看寄存器的值,要看内存地址里面的值需要用 x/uh 0x地址。这时候你可以看到r2寄存器的值为0x166410, +0x20= 0x166430. 注意这里2个都是是16进制的加法,不要弄错了。那么就用命令 x/uh 0x166430, 查看到他的内存值为800,就是大包的钱。
设置寄存器值
set $r4=0,
监视断点命令,watch *0x16d49c
set $x=0x95000
while(*++$x!=22975 && $x<0x1236000)
end
p/x $x
- GDB来调试IPHONE步骤
- gdb调试步骤
- Android gdb 调试步骤
- lldb调试IPHONE步骤
- ubuntu gdb 多线程调试步骤
- Ubuntu中gdb调试步骤
- 使用GDB来调试程序
- iphone调试 gdb基本命令和技巧
- android ndk-gdb 调试的步骤
- Linux:GDB调试NS2项目详细步骤
- Android 非ROOT GDB 调试步骤
- 使用gdb调试的一般步骤
- 在NS2中用GDB来调试
- 使用Qemu+gdb来调试内核
- 用gdb来调试go程序
- 【转载】用gdb来调试程序
- 使用gdb来调试嵌入式系统
- 使用Qemu+gdb来调试内核
- linux下ssh免密登陆
- Android开发好习惯之二
- 不应该把数据放在 Application 中
- UDP编程
- Google VS 甲骨文意义何在
- GDB来调试IPHONE步骤
- Android-BroadcastReceiver
- squid存储机制
- BaiduMap---百度地图官方Demo之图层展示(展示普通图,卫星图,交通流量图及百度城市热力图)
- anthor copy from interview
- android自定义换行居中CenterTextView
- 引用css和js链接地址中带的问号是什么意思?
- nginx+lua+GraphicsMagick实现图片自动缩放功能(强烈推荐)
- MongoDB数据库的海量数据存储应用