app反汇编,替换汇编码,求指点

小弟刚开始学习反编译,受让就想试试改改游戏玩儿,因为网上有不少教程的帖子,就跟着教程走,当然一些地方要参考《ios逆向工程》
反编译、断点都很处理,一初步找到了要修改的地方,但是在替换汇编码的时候被困住了。。。。不知道该怎么来:sweat:

威锋网,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个字节的


左思右想不知道该怎么解决这个问题,求高手指点

以解决,解决办法ipod4g大哥已经在帖子里说明了方法,我没看仔细,没有领会到
留意:* 一些程式反汇编后是ARM Thumb, ARM Thumb 是16 bits 而ARM 是32 bits. ARM 32 bits 及 ARM Thumb 的分别请找上面 ARM Assembler 的参考(ARM Thumb 的可用指令是比 ARM 32 bits 少)。 如果要找 ARM Thumb 代码要将上面的.code 32改为.code 16 及加上 .thumb_func _main 如下**[list=1]
*]
*] .code 16
*] .thumb_func _main
]
[/list]
复制代码

*我的自己写了个汇编文件,编译一下就得到了想要的结果


有个Hopper… 可以用用看~~ alt+f3 可以动态的修改指令. 直接就能看到机器码~

多谢,回头试试

楼主,你是用theos写tweek吗?你怎么让它支持.s文件的?