能力值:
( LV3,RANK:20 )
|
-
-
2 楼
那个工具太老了,很多新的指令集不支持了
介绍一种使用汇编器来生成机器码的方法吧
########################################
先用IDA反编译,找到要修改的指令,将指令复制出来保存到一个.s(如下文asmgen.s)文件中,然后使用Android NDK自带的汇编器来编译,即可生成汇编-机器码对照。
生成32位指令(汇编器:android-ndk-xxx\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-as.exe):
> arm-linux-androideabi-as.exe -ahlm -k -g -march=armv7 -mthumb-interwork -o asmgen.o asmgen.s
64位指令(汇编器:android-ndk-xxx\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-as.exe):
> aarch64-linux-android-as.exe -ahlm -g -o asmgen64.o asmgen64.s
============================================
.s 样例
-------------------------
.text
MOV X3, #0x1000
LDR X3, =0x85000
执行结果:
1
2 .text
3
4 0000 030082D2 MOV X3, #0x1000
5 0004 23000058 LDR X3, =0x85000
5 00500800
5 00000000
===================================
对于模拟反编译后的跳转指令,不用手动计算偏移之类的,直接用.org设置指令所在地址即可:
.syntax unified
.text
.org 0x1EB0
B loc_1EDA
.org 0x1EDA
loc_1EDA:
MOVW R1, #0x1ED
生成的机器码如下:
1
2 .syntax unified
3 .text
4
5 0000 00000000 .org 0x1EB0
5 00000000
5 00000000
5 00000000
5 00000000
6 1eb0 00F013B8 B loc_1EDA
7
8 1eb4 00000000 .org 0x1EDA
8 00000000
8 00000000
8 00000000
8 00000000
9 loc_1EDA:
10 1eda 40F2ED11 MOVW R1, #0x1ED
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
netsniffer
那个工具太老了,很多新的指令集不支持了
介绍一种使用汇编器来生成机器码的方法吧
########################################
先用IDA反编译,找到要修改的指令, ...
正好用到 非常感谢
|
能力值:
( LV9,RANK:180 )
|
-
-
5 楼
http://www.keystone-engine.org/keypatch/
|
能力值:
( LV1,RANK:0 )
|
-
-
6 楼
netsniffer
那个工具太老了,很多新的指令集不支持了
介绍一种使用汇编器来生成机器码的方法吧
########################################
先用IDA反编译,找到要修改的指令, ...
大佬,能解释一下这个命令行的参数含义吗,或者有对应的文档吗,看不懂 倒数第二个参数是什么吗
|
|
|