小弟刚开始学习反编译,受让就想试试改改游戏玩儿,因为网上有不少教程的帖子,就跟着教程走,当然一些地方要参考《ios逆向工程》
反编译、断点都很处理,一初步找到了要修改的地方,但是在替换汇编码的时候被困住了。。。。不知道该怎么来
威锋网,ipod4g的几篇帖子里提到了修改汇编码,比如:
0003babc的应修改目标代码是[list=1]
*]
*]add r1, r0, r5, lsl#5 @意思是 r1 = r0 +( r5 二进制左移五位,即十进制乘大32倍)
*]
[/list]
复制代码
add r1, r0, r5 的ARM指令代码是 e0801005
修改目标是要找到 add r1, r0, r5, lsl#5 的ARM指令代码 ?
用 vim 或 nano 建立 armtest.s 如下[list=1]
*]
*] .file ‘armtest.s’
*] .globl _main
*] .code 32
*]_main:
*] add r1, r0, r5
*] add r1, r0, r5, lsl #5
*]
[/list]
复制代码
汇编 arm 输入[list=1]
*]
*]as armtest.s -o armtest.o ; otool -tv armtest.o
*]
[/list]
复制代码
便看到[list=1]
*]
*](__TEXT,__text) section
*]_main:
*]00000000 e0801005 add r1, r0, r5
*]00000004 e0801285 add r1, r0, r5, lsl #5
*]
[/list]
复制代码
及得到add r1, r0, r5, lsl #5 目标ARM指令代码为 e0801285
将
05 10 80 E0
改为
85 12 80 E0
但是我准备该的地方是:
这个地方在DBA里看是这样的:
对应的汇编只有4个字节。。。。让人发愁的是,自己写的汇编码编译出来,同样的命令是8个字节的
左思右想不知道该怎么解决这个问题,求高手指点