逆向工程 --- 反汇编特征识别
这段反汇编代码具有以下典型特征,表明它是由IDA Pro(Interactive Disassembler) 生成的:
关键识别特征:
-
伪变量命名(如
var_18,var_10)
→ IDA 会自动为栈变量生成var_<offset>的符号化名称。 -
标签命名规范(如
loc_68F,short loc_6A7)
→ IDA 使用loc_<地址>标记代码位置。 -
交叉引用注释
call ___stack_chk_fail中的___是 IDA 对导入函数的命名风格(如栈保护检查函数)。 -
操作数显示方式
[rsp+18h+var_10]是 IDA 对栈帧地址的符号化计算(var_10通常表示rsp-10h)。 -
字符串自动解析
直接显示字符串内容:"github/jp1017/hellojni/MainActivity"(IDA 的字符串识别功能)。 -
段寄存器语法
fs:28h的表示方式符合 IDA 的显示规范。
代码功能分析(补充说明):
-
栈保护(Stack Canary)
0x63a mov rax, fs:28h ; 读取栈保护值 0x643 mov [rsp+18h+var_10], rax ; 保存到栈上 ... 0x68f mov rcx, [rsp+18h+var_10] 0x694 xor rcx, fs:28h ; 检查是否被修改 0x69f jnz short loc_6A7 ; 值改变则跳转到栈保护失败 0x6a7 call ___stack_chk_fail -
JNI 相关调用
-
call qword ptr [rax+30h]可能调用 JNI 函数(如FindClass)。 -
字符串
"github/jp1017/hellojni/MainActivity"指向 Java 类路径。 -
call qword ptr [r8+6B8h]疑似注册本地方法(如RegisterNatives)。
-
结论:
这是 IDA Pro 反汇编输出的代码片段,常用于分析二进制文件(如 Android SO 库中的 JNI 函数)。其符号化显示和自动化注释极大提升了逆向工程效率。其他工具(如 Ghidra、Binary Ninja)虽有类似功能,但上述语法是 IDA 的标志性风格。
浙公网安备 33010602011771号