
C语言之 判断语句基础与if语句反汇编
发布日期:2021-05-08 23:08:22
浏览次数:20
分类:博客文章
本文共 2385 字,大约阅读时间需要 7 分钟。
0x01.判断语句介绍以及用法
判断语句有哪些?
1、If用法1:if (条件){ //代码块}
当条件成立,也就是为True时,执行{}中的代码
用法2:
if(条件){ //代码块}else{ //代码块}
如上,当条件不成立的时候执行else语句里面的代码
用法3:
if(条件){ //代码块}else if{ //代码块}else{ //代码块}
例如
2、Switch
switch (表达式){ case 常量表达式1: 语句; break; case 常量表达式2: 语句; break; case 常量表达式3: 语句; break; case 常量表达式3: 语句; break; default: 语句; break;}
switch要求:
1、case后面必须是常量表达式
2、case后常量表达式的值不能一样
3、switch后面表达式必须为整数
3、?:运算符
int main(){ int a = 10; int b = 5; int c = a > b ? a : b; printf("%d", c); return 0;}
到此,条件判断语句就差不多了
0x02.JCC指令与IF语句反汇编
1、案例一
mov eax, dword ptr[ebp + 8] 分析:cmp指令 影响标志位
cmp eax, dword ptr[ebp + 0Ch] jle :小于或者等于就跳转到00401059jle 004010592、案例二
mov eax, dword ptr[ebp + 8] 分析:cmp指令 影响标志位
cmp eax, dword ptr[ebp + 0Ch] jl :小于则跳转jl 004010593、案例三
mov eax, dword ptr[ebp + 8] jge :大于或者等于则跳转
cmp eax, dword ptr[ebp + 0Ch]jge 004010594、案例四
mov eax, dword ptr[ebp + 8] jg :大于则跳转
cmp eax, dword ptr[ebp + 0Ch]jg 00401059整体分析:
函数调用处代码:
push 5 分析:
push 4 两个参数call 0040100fadd esp, 8接下来就可以做个小练习了:
调用处代码:push 5push 4call 0040100fadd esp, 8函数内部:函数内部功能分析:00401030 push ebp00401031 mov ebp, esp 1、分析参数:00401033 sub esp, 44h00401036 push ebx00401037 push esi00401038 push edi 2、分析局部变量00401039 lea edi, [ebp - 44h]0040103C mov ecx, 11h00401041 mov eax, 0CCCCCCCCh00401046 rep stos dword ptr[edi]00401048 mov eax, [004225c4] 3、分析全局变量0040104D mov dword ptr[ebp - 4], eax00401050 mov ecx, dword ptr[ebp + 8] 00401053 cmp ecx, dword ptr[ebp + 0Ch]00401056 jg 0040106400401058 mov edx, dword ptr[ebp + 0Ch] 4、功能分析0040105B add edx, dword ptr[ebp - 4]0040105E mov dword ptr[004225c4], edx00401064 pop edi00401065 pop esi 5、返回值分析00401066 pop ebx00401067 mov esp, ebp00401069 pop ebp0040106A ret 6、还原成C函数
00401048 mov eax, [004225c4] 把004225c4
的值给eax
00401053 cmp ecx, dword ptr[ebp + 0Ch] if(ecx>5)
00401058 mov edx, dword ptr[ebp + 0Ch] 把5给edx0040105B add edx, dword ptr[ebp - 4] 把edx加上eax全局变量的值0040105E mov dword ptr[004225c4], edx 再把eax的值给 004225c4地址上发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月03日 15时38分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
快服务流量之争:如何在快服务中占领一席之地
2021-05-09
【活动】直播揭秘<如何从0开发HarmonyOS硬件>
2021-05-09
Unity平台 | 快速集成华为性能管理服务
2021-05-09
对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
2021-05-09
使用Power BI构建数据仓库与BI方案
2021-05-09
Django认证系统并不鸡肋反而很重要
2021-05-09
快用Django REST framework写写API吧
2021-05-09
tep用户手册帮你从unittest过渡到pytest
2021-05-09
12张图打开JMeter体系结构全局视角
2021-05-09
Spring Boot 2.x基础教程:构建RESTful API与单元测试
2021-05-09
[UWP 自定义控件]了解模板化控件(1):基础知识
2021-05-09
UWP 自定义控件:了解模板化控件 系列文章
2021-05-09
[UWP]从头开始创建并发布一个番茄钟
2021-05-09
在 Azure 上执行一些简单的 python 工作
2021-05-09
WinUI 3 Preview 3 发布了,再一次试试它的性能
2021-05-09
使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)
2021-05-09
List数组排序
2021-05-09
VMware vSphere 离线虚拟机安装 BIND 9
2021-05-09
说说第一份工作
2021-05-09
dojo/request模块整体架构解析
2021-05-09