【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

简介: 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

文章目录

一、call 子函数调用指令

二、jmp 跳转指令

三、lea 加载指令

四、mov 数据传送指令

总结





一、call 子函数调用指令


call 指令是 子函数调用指令 , 调用的指令的下一条指令地址入栈 , 会自动跳转到 子函数 目标地址中 , 该地址可能存储在寄存器中 , 也可能是一个常量 ;






二、jmp 跳转指令


jmp 跳转指令 , 默认情况下是无条件跳转 ;


如果想要附加条件跳转 , 如达成某种条件后才能跳转 , 可以附带如下条件 ;


a : above , 无符号 大于 跳转 ;


b : below , 吗无符号 小于 跳转 ;


g : great , 有符号 大于 跳转 ;


l : less , 有符号 小于 跳转 ;


e : equal , 等于 ;


n : negative , 反条件 ;


o : 对应 溢出标志 , 减法操作是否会导致溢出 ; ( 与运算不存在进位 , 没有溢出 )


p : 对应 奇偶 位 , 运算结果 的 奇偶 , 检测结果最后一个位是 0 00 还是 1 11 ;


s : 对应 符号标志位 , 计算结果如果是负数 , 该标志位设置成 0 00 , 计算结果如果是正数 , 该标志位设置成 1 11 ;


z : 对应 零标志 , 如果 与操作 最后的结果是 0 00 , 该 零标志位 会被设置成 1 11 , 如果 与操作 结果不为 0 00 , 该 零标志位 会被设置成 0 00 ;



上述条件可以进行任意组合 , 如


a 表示大于跳转 ,

e 表示等于跳转 ,

ae 表示大于等于跳转 ,

nae 表示不大于等于跳转 即 小于跳转 ;





三、lea 加载指令


lea 指令 : Load Effect Address 取地址值 , 将 数据地址 加载到 寄存器 中 , 方便进行批量数据处理 , 如批量复制 , 批量修改 ;






四、mov 数据传送指令


mov 指令是数据传送指令 ;


mov a1 , a2 指令的作用是 , 将 a2 中的值写入到 a1 中 ;






总结


align 字节对齐 , db 声明字符 / 字符串 , nop 空指令

cmp 比较 , test 比较

call 子函数调用指令 , jmp 跳转指令 ( 可选参数 a , b , c , g , l , o , p , s , z , e , n)

lea 加载指令 , lds , les , lfs , lgs , lss , mov 数据传送指令

push , pop , pushf , popf , pushd , popd , pushad , popad , pusha , popa

ret , retn , set

add , sub , mul , div

xor , not , shl , shr , sal , sar , rol , ror , rcl , rcr


目录
相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1436 4
|
9月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
584 11
|
11月前
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
2564 2
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
873 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
513 0
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
1557 0
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
812 0
|
存储 Unix 编译器
汇编语言----X86汇编指令
汇编语言----X86汇编指令
1373 2
|
存储 机器学习/深度学习 移动开发
汇编语言指令系列
汇编语言指令系列
3237 0