//for 反汇编
#include<stdio.h> int main()
{
int i=;
int s=;
for(i=;i<;i++)
{
s=s+;
}
s=;
for(i=;i>=;i--)
{
s=s+;
} return ; }
//for 反汇编
#include<stdio.h> int main()
{
000000013F1231E0 push rdi
000000013F1231E2 sub rsp,10h
000000013F1231E6 mov rdi,rsp
000000013F1231E9 mov ecx,
000000013F1231EE mov eax,0CCCCCCCCh
000000013F1231F3 rep stos dword ptr [rdi]
int i=;
000000013F1231F5 mov dword ptr [rsp],
int s=;
000000013F1231FC mov dword ptr [s],
for(i=;i<20;i++)
000000013F123204 mov dword ptr [rsp],0Ah
000000013F12320B jmp main+35h (013F123215h)
000000013F12320D mov eax,dword ptr [rsp]
000000013F123210 inc eax
000000013F123212 mov dword ptr [rsp],eax
000000013F123215 cmp dword ptr [rsp],14h
; i>=20 则跳出循环
000000013F123219 jge main+47h (013F123227h)
{
s=s+;
000000013F12321B mov eax,dword ptr [s]
000000013F12321F inc eax
000000013F123221 mov dword ptr [s],eax
}
000000013F123225 jmp main+2Dh (013F12320Dh)
s=;
000000013F123227 mov dword ptr [s],
for(i=;i>=1;i--)
000000013F12322F mov dword ptr [rsp],0Ah
for(i=;i>=1;i--)
000000013F123236 jmp main+60h (013F123240h)
000000013F123238 mov eax,dword ptr [rsp]
000000013F12323B dec eax
000000013F12323D mov dword ptr [rsp],eax
000000013F123240 cmp dword ptr [rsp],
;小于则跳出循环
000000013F123244 jl main+72h (013F123252h)
{
s=s+;
000000013F123246 mov eax,dword ptr [s]
000000013F12324A inc eax
000000013F12324C mov dword ptr [s],eax
}
000000013F123250 jmp main+58h (013F123238h) return ;
000000013F123252 xor eax,eax }
000000013F123254 add rsp,10h
000000013F123258 pop rdi
000000013F123259 ret

图片来自:《天书夜读 从汇编语言到windows内核编程》 作者:谭文 邵坚磊

如果是release版,for被优化,模仿do-while语句,把跳转判断以及限制变量的改变放在结尾处。

struct寻址:

在c反汇编中,结构与枚举、联合没有差别。

struct寻址&for反汇编的更多相关文章

  1. C struct结构体内存对齐问题

    在空间看到别人的疑问引起了我的兴趣,刚好是我感兴趣的话题,就写一下.为了别人的疑问,也发表在qq空间里.因为下班比较晚,10点才到家,发表的也晚.其实是个简单的问题.  直接用实例和内存图说明: #i ...

  2. IDA反汇编学习

    1 转自:http://www.cnblogs.com/vento/archive/2013/02/09/2909579.html IDA Pro是一款强大的反汇编软件,特有的IDA视图和交叉引用,可 ...

  3. linux内核学习之一 简单c语言反汇编

    (我是第一次发技术博客的菜鸟,恳请大家指导!!) 一  由简单c程序生成汇编代码 首先给出本次我们要反汇编的简单c语言程序:(够简单吧~) 在linux环境中使用下面的命令条件编译: 生成汇编文件sh ...

  4. 网络IPC:套接字之寻址

    在学习用套接字做一些有意义的事情之前,需要知道如何确定一个目标通信进程. 进程的标识有两个部分:计算机的网络地址可以帮助标识网络上想与之通信的计算机,而服务可以帮助标识计算机上特定的进程. 1.字节序 ...

  5. POJ 2002 Squares 解题报告(哈希 开放寻址 & 链式)

    经典好题. 题意是要我们找出所有的正方形.1000点,只有枚举咯. 如图,如果我们知道了正方形A,B的坐标,便可以推测出C,D两点的坐标.反之,遍历所有点作为A,B点,看C,D点是否存在.存在的话正方 ...

  6. Ext2文件系统布局,文件数据块寻址,VFS虚拟文件系统

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  7. C++反汇编与逆向分析技术揭秘

    C++反汇编-继承和多重继承   学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...

  8. [译]反-反汇编 & 混淆 #1: 苹果没有遵循自己制定的Mach-O规范?

    原文地址:http://reverse.put.as/2012/02/02/anti-disassembly-obfuscation-1-apple-doesnt-follow-their-own-m ...

  9. C++函数调用的反汇编过程及Thunk应用

    x86汇编基础知识 1. 汇编常用寄存器 esp,(Extended stack pointer)栈顶指针.因为x86的栈内存是向下扩展的,因此当push入栈时,esp–.pop出栈时,esp++.e ...

随机推荐

  1. Day5 - H - Supermarket POJ - 1456

    A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold ...

  2. SpringMVC 文件的上传、下载

    文件上传 (1)下载添加2个jar包 commons-fileupload.jar commons-io.jar SpringMVC的文件上传依赖于Apache的FileUpload组件,需要下载添加 ...

  3. 002.Delphi插件之QPlugins,菜单插件

    运行之后的效果如下, 图一 图二 主界面代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages, System.SysUt ...

  4. 格雷码(Grey Code)生成规则

    (1) Grey码在FPGA实际应用中是实用的码,在8421BCD码累加计数器中,如果寄存器需要发生多位(两位或者以上)的跳变,会出现中间态,这样作为组合逻辑的输入是不稳妥的. 下面看两个中间态的例子 ...

  5. 看完本文,Essay写作再也不需要凑字数

    很多同学都说过自己写论文的时候出现“词穷”的情况,无奈只能靠“胡编乱造”来凑字数写出开头段,这其实是大家的阅读量没有达到要求.但不能因为出现这种情况就对自己的论文不负责任,否则你的论文分数可能就不会对 ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-move

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. springmv返回JSON数据格式

    1.先导入依赖 <!-- springmvc使用@responseBody start--> <dependency> <groupId>com.fasterxml ...

  8. JS - 获取任意一天的0点和23:59:59时间

    转载自 https://www.cnblogs.com/sk-3/archive/2019/07/23/11232750.html 使用了setHours() 方法 setHours() 方法用于设置 ...

  9. 01-JAVA语言基础——课程作业1—编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。

    1.题目:编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 2.程序设计思想: 通过运行配置输入数字后,其保存类型为String类型,因此需要采用Integer.valueOf(arg)将 ...

  10. 050-PHP除法运算

    <?php $n=10/3; //除法运算 echo $n; //输出变量n的值 ?>