asm source code note 1.4_do_while循环的实现
发布日期:2021-06-30 22:05:59
浏览次数:2
分类:技术文章
本文共 1856 字,大约阅读时间需要 6 分钟。
//asm source code note 1.4_do_while循环的实现
29: 30: int FnDo(int a, int b) 31: { //保存基址和栈顶 004010F0 push ebp 004010F1 mov ebp,esp //开辟内部变量空间, 变量有2个 004010F3 sub esp,48h 004010F6 push ebx 004010F7 push esi 004010F8 push edi 004010F9 lea edi,[ebp-48h] 004010FC mov ecx,12h 00401101 mov eax,0CCCCCCCCh 00401106 rep stos dword ptr [edi] //[ebp - 8] = 内部变量2 (var2) //[ebp - 4] = 内部变量1 (var1) //[ebp + 0] = 函数入口ebp //[ebp + 4] = 函数返回地址 //[ebp + 8] = 函数形参1 (para1) //[ebp + 0xc] = 函数形参2 (para2) 32: int c = a + b; //var1 = para1 + para2; 00401108 mov eax,dword ptr [ebp+8] 0040110B add eax,dword ptr [ebp+0Ch] 0040110E mov dword ptr [ebp-4],eax 33: int i = 0; //var2 = 0; 00401111 mov dword ptr [ebp-8],0 34: 35: do 36: { 37: c = c + i; //var1 = var1 + var2; loop1: 00401118 mov ecx,dword ptr [ebp-4] 0040111B add ecx,dword ptr [ebp-8] 0040111E mov dword ptr [ebp-4],ecx 38: } while (++i < 50); //var2 += 1; 00401121 mov edx,dword ptr [ebp-8] 00401124 add edx,1 00401127 mov dword ptr [ebp-8],edx //if(var2 < 0x32) // goto loop1; 0040112A cmp dword ptr [ebp-8],32h 0040112E jl FnDo+28h (00401118) 39: 40: return c; //return var1; 00401130 mov eax,dword ptr [ebp-4] 41: } //恢复堆栈,返回 00401133 pop edi 00401134 pop esi 00401135 pop ebx 00401136 mov esp,ebp 00401138 pop ebp 00401139 ret //把伪代码整理一下,如下: Function(para1, para2) { var1; var2; [var1] = [para1] + [para2]; [var2] = 0; loop1: [var1] = [var1] + [var2]; [var2] += 1; if([var2] < 0x32) { goto loop1; } return [var1]; } //把伪代码整理成c语言源码 DWORD Function(DWORD dwPara1, DWORD dwPara2) { DWORD dwVar1 = dwPara1 + dwPara2; DWORD dwVar2 = 0; do { dwVar1 = dwVar1 + dwVar2; }while(++dwVar2 < 0x32); return dwVar1; } //原版的代码 int FnDo(int a, int b) { int c = a + b; int i = 0; do { c = c + i; } while (++i < 50); return c; } //经过asm to c, 逆向后的源码与原版源码的区别如下: //实现的功能一样 //函数形参和变量的类型看不出来了,都变成了DWORD //形参和变量的含义看不出来了,需要根据上下文进行进一步整理转载地址:https://lostspeed.blog.csdn.net/article/details/4631843 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月16日 01时00分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Echarts使用及动态加载图表数据 折线图X轴数据动态加载
2019-05-01
微信小程序 获取对应页面二维码
2019-05-01
高并发量网站解决方案
2019-05-01
接口api开发中安全性问题
2019-05-01
spring boot 知识点整理
2019-05-01
URL重定向,referer,referrer和安全
2019-05-01
Android生命周期
2019-05-01
Android游戏开发基础
2019-05-01
Android Action
2019-05-01
Android 界面切换动画控制overridePendingTransition
2019-05-01
Android进度条——ProgressDialog
2019-05-01
Android进度条自定义——类似ProgressDialog效果的Dialog
2019-05-01
Android 之 ContentProvider 与 ContentResolver
2019-05-01
【接口自动化】
2019-05-01
SpringBoot搭建一个Web工程
2019-05-01
Spring Boot 安全框架 Shiro 入门
2019-05-01
如何用一句话激怒互联网人?
2019-05-01
用 Python 爬了点你们喜欢的电影
2019-05-01
推荐一位川大零基础转行 Python 的人生勇士
2019-05-01