GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

逆向工程 --- 反汇编特征识别

这段反汇编代码具有以下典型特征,表明它是由IDA Pro(Interactive Disassembler) 生成的:

关键识别特征:

  1. 伪变量命名(如 var_18var_10
    → IDA 会自动为栈变量生成 var_<offset> 的符号化名称。

  2. 标签命名规范(如 loc_68Fshort loc_6A7
    → IDA 使用 loc_<地址> 标记代码位置。

  3. 交叉引用注释
    call ___stack_chk_fail 中的 ___ 是 IDA 对导入函数的命名风格(如栈保护检查函数)。

  4. 操作数显示方式
    [rsp+18h+var_10] 是 IDA 对栈帧地址的符号化计算(var_10 通常表示 rsp-10h)。

  5. 字符串自动解析
    直接显示字符串内容:"github/jp1017/hellojni/MainActivity"(IDA 的字符串识别功能)。

  6. 段寄存器语法
    fs:28h 的表示方式符合 IDA 的显示规范。


代码功能分析(补充说明):

  1. 栈保护(Stack Canary)

    asm
     
    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
  2. 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 的标志性风格。

posted on 2025-06-29 18:04  GKLBB  阅读(38)  评论(0)    收藏  举报