【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)

and 与操作 , 取 esp 的低 16 1616 位 , 然后与操作的结果 减去 10h ;


and     esp, 0FFFFFFF0h
sub     esp, 10h


【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)



$+5 的含义是当前指令 + 5 , 即执行下一条指令 , 每个指令的长度是 5 55 字节 ; 该指令可能是为了兼容 arm 代码而生成的 ; 调用 call 指令后 , 会将下一条要执行的指令放到栈中 ;


call    $+5

【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)



该行指令对应的机器码如下 :


【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)



上面 call 调用后 , 会将下一条要执行的指令地址放到栈中 ;


这里使用 pop 将指令地址从栈中取出 , 放到 ebx 中 ;


从栈中取到的值实际上是 EIP , 当前位置 ;


pop     ebx

【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)




将当前的地址 加上 0C75E7h 值 , 最终加法运算的结果作为传入下一个函数 __bionic_atfork_run_prepare 的参数 ;


add     ebx, 0C75E7h


【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | x86 汇编语言分析 )(二)

上一篇:【初始化-sshd】init_sshd.sh


下一篇:Oracle修改redo log大小的方法