本帖最后由 wruih 于 2015-8-5 14:32 编辑
动态调试方法: 先在ipad安装openssh,再安装gdb .PC 端运行 SSH 客户端一般是putty,连接到设备,输入用户名:
root,默认密码: alpine, 1.动态调试,主要工具gdb 首先,ps -ax|grep "要破解的程序名",得到其进程id,如1234
接着,使用gdb,用attach “进程id”
然后,bt查看函数调用栈,找到可疑函数后,使用up
继续,用si等命令单步跟踪,set等命令改变参数的值
再来,使用disassemble命令,查看确认要修改的二进制字符串
最后,用十六进制编辑器查找并修改二进制字符串 2. 动静结合,主要工具otool + gdb
a. otool -tV "目标程序" > dis.asm
b. 文本编辑器打开 dis.asm,查找可疑的函数
c. 使用gdb打开目标程序,并在可疑的函数中设置断点,如 b *0x00001234
d. run 运行程序,断点处,si 等跟踪, set 设置关键参数值
e. 用计算器计算需要修改的序列偏移,或disassemble命令
f. 用十六进制编辑器查找并修改二进制字符串 常用的命令 attach 1234; b *0x1234;clear *0x1234;bt;disassemble;si;finish;set $eax
gcc test.c -o test;otool -tV target > dis.asm 另一种方法是,加壳源程序在运行时候会自动解密,运行应用时动态调试 dump出关键代码 再用IDA分析。 IDA左边 Functions window 看出来,函数是以“ sub_”开头的说明已经加密 root# gdb -e ./iRead (gdb) dump memory dec.bin 0x3000 0x837000
|