//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. C++编程学习(十一) 指针和引用的区别

    1.指针有自己的一块空间,而引用只是一个别名: 2.使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小: 3.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象 的引用: ...

  2. qq群的表设计探究

    2018年3月21日  课题组管理就如qq的群是一样的,课题组有课题组组长:qq群有群主:课题组有组员:qq群有群人员 对于一个课题组来说,组长可以对课题组进行修改,组员只能看得见,但是不能修改.所以 ...

  3. 数据库-----catalog与schema简介

    在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表 ...

  4. Javascript获取当前鼠标在元素内的坐标定位

    代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...

  5. 获取选中行中的数据提取并且保存到txt

    function getchcount(query: TADOQuery): Integer;var i:integer;begin i:=0; with Query do begin Query.F ...

  6. linux后台运行jar

    1. 在linux服务器上运行Jar文件时通常的方法是: $ java -jar test.jar 这种方式当ssh窗口关闭时,程序中止运行,或者是运行时没法切出去执行其他任务 2. 保持程序后台运行 ...

  7. redis改配置

    命令行: 暂时生效,适合于做测试,或者线上马上服务修改,重启失效 CONFIG set stop-writes-on-bgsave-error no OK CONFIG get stop-writes ...

  8. 干货分享:想要写好Proposal,这四个问题必须解决

    当大家确定了毕业论文选题之后,下一步就是着手写开题报告,也就是proposal.开题报告或者说是研究计划要回答四个问题:为什么这个问题重要,为什么这个问题很难解决,为什么现在要考虑解决这个问题,为什么 ...

  9. jsp页面使用<% 语句%> SQL Server数据库报空指针异常(在控制台可以正常执行)

    一直反感用SQL Server数据库,很影响电脑性能!!数据库作业不得不用 前几天作业一直报空指针异常: 自己检查了所传参数,和数组不为空 数据库查询语句不为空 然后查看SQL服务是否启动  主要是S ...

  10. 08 SSM整合案例(企业权限管理系统):08.权限控制

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户操作 10.权限关联与控制 11.AOP日志 08.权限控制 SSM权限操作 ...