【Android 逆向】x86 汇编 ( cmp 比较指令 | test 比较指令 )
Android 比较 指令 逆向 test 汇编 x86
2023-09-14 09:07:30 时间
一、cmp 比较指令
cmp 指令通过 减法运算 , 影响标志位 CPAZO ;
cmp eax, ebx
上述指令执行时 , eax - ebx , 减法运算结果影响标志位 CPAZO ;
- C 对应 进位 位 , 此处指的是减法操作是否有借位 ;
- P 对应 奇偶 位 , 运算结果 的 奇偶 , 检测结果最后一个位是 0 0 0 还是 1 1 1 ;
- A 对应 辅助进位 位 , 32 32 32 位的整型中 , 低 16 16 16 位是否发生了 借位 或 进位 ;
- Z 对应 零标志 , 如果 减法操作 最后的结果是 0 0 0 , 该 零标志位 会被设置成 1 1 1 , 如果 减法操作 结果不为 0 0 0 , 该 零标志位 会被设置成 0 0 0 ;
- O 对应 溢出标志 , 减法操作是否会导致溢出 , 负数 - 负数 会出现溢出 ;
二、test 比较指令
cmp 指令 和 test 指令 用于 比较 2 2 2 个操作数是否相等 ;
test 指令通过 与运算 , 影响标志位 CPSZO ;
- C 对应 进位 位 , 此处指的是减法操作是否有借位 ;
- P 对应 奇偶 位 , 运算结果 的 奇偶 , 检测结果最后一个位是 0 0 0 还是 1 1 1 ;
- S 对应 符号标志位 , 计算结果如果是负数 , 该标志位设置成 0 0 0 , 计算结果如果是正数 , 该标志位设置成 1 1 1 ;
- Z 对应 零标志 , 如果 与操作 最后的结果是 0 0 0 , 该 零标志位 会被设置成 1 1 1 , 如果 与操作 结果不为 0 0 0 , 该 零标志位 会被设置成 0 0 0 ;
- O 对应 溢出标志 , 减法操作是否会导致溢出 ; ( 与运算不存在进位 , 没有溢出 )
总结
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 adb push 与 adb install的比较
- android 时间控件概述
- 【ANDROID游戏开发之二】剖析游戏开发用VIEW还是SURFACEVIEW ?!
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
- Weex Android Border绘制
- Android----drawable state各个属性详解----ListView几个比较特别的属性:
- Android 11.0 12.0默认开启开发者模式和开启usb调试模式
- 【Android 逆向】Android 系统中文件的用户和分组 ( 文件所有者与分组 | /sdcard/ 的文件分组 | /data/ 目录分析 | 用户类型 )
- 高速Android开发系列通信篇之EventBus
- Android高级开发面试题以及笞案整理
- android下watchprosp和svc命令