GDB来调试IPHONE步骤

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值