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

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

文章目录

一、x86 汇编语言分析





一、x86 汇编语言分析


在上一篇博客 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 ) 中 , 使用 IDA 反编译 Android SDK 中的 D:\001_Develop\001_SDK\Sdk\build-tools\26.0.3\renderscript\lib\intermediates\x86\libc.so 文件 , 并查找其中的 fork 方法 ;


本篇博客中分析该 libc.so 动态库中的 fork 方法的汇编代码 ;



分析 fork 方法的 x86 汇编代码 :


image.png


汇编代码内容 :


public fork
fork proc near
; __unwind {
push    ebp
mov     ebp, esp
push    ebx
push    edi
push    esi
and     esp, 0FFFFFFF0h
sub     esp, 10h
call    $+5
pop     ebx
add     ebx, 0C75E7h
call    _Z27__bionic_atfork_run_preparev ; __bionic_atfork_run_prepare(void)
mov     eax, large gs:0
test    eax, eax
jz      short loc_161EC


将栈指针保存到 ebp 中 : 程序执行过程中 , esp 是栈的地址 , 程序执行过程中需要用到 esp 变量 , 最好不要直接修改 esp , 这里将 esp 拷贝到 ebp 中 , ebp 全程没有修改以及使用 , 函数执行完毕后 , 再将 ebp 出栈 , 还原即可 ;


push    ebp
mov     ebp, esp


image.png



使用完毕之后 , 会进行出栈操作 :


pop     ebp


image.png



其它的寄存器变量值 , 也进行入栈 , 保护这些值 , 函数执行完毕后再出栈 , 将这些值还原 , 其中 eax 不用入栈 , eax 用于记录返回值 , 该值是肯定要进行修改的 ;


push    ebx
push    edi
push    esi


image.png

image.png

目录
相关文章
|
7天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
17 1
|
7天前
|
Shell Android开发
Android系统 init.rc文件详解
Android系统 init.rc文件详解
26 0
|
7天前
|
Java Android开发 C++
Android源代码定制:MK文件执行顺序|属性覆盖
Android源代码定制:MK文件执行顺序|属性覆盖
16 2
Android源代码定制:MK文件执行顺序|属性覆盖
|
7天前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
40 1
|
7天前
|
移动开发 Java Unix
Android系统 自动加载自定义JAR文件
Android系统 自动加载自定义JAR文件
27 1
|
5天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
13天前
yolo-world 源码解析(六)(2)
yolo-world 源码解析(六)
42 0
|
13天前
yolo-world 源码解析(六)(1)
yolo-world 源码解析(六)
43 0
|
14天前
yolo-world 源码解析(五)(4)
yolo-world 源码解析(五)
47 0

推荐镜像

更多