struct寻址&for反汇编
//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反汇编的更多相关文章
- C struct结构体内存对齐问题
在空间看到别人的疑问引起了我的兴趣,刚好是我感兴趣的话题,就写一下.为了别人的疑问,也发表在qq空间里.因为下班比较晚,10点才到家,发表的也晚.其实是个简单的问题. 直接用实例和内存图说明: #i ...
- IDA反汇编学习
1 转自:http://www.cnblogs.com/vento/archive/2013/02/09/2909579.html IDA Pro是一款强大的反汇编软件,特有的IDA视图和交叉引用,可 ...
- linux内核学习之一 简单c语言反汇编
(我是第一次发技术博客的菜鸟,恳请大家指导!!) 一 由简单c程序生成汇编代码 首先给出本次我们要反汇编的简单c语言程序:(够简单吧~) 在linux环境中使用下面的命令条件编译: 生成汇编文件sh ...
- 网络IPC:套接字之寻址
在学习用套接字做一些有意义的事情之前,需要知道如何确定一个目标通信进程. 进程的标识有两个部分:计算机的网络地址可以帮助标识网络上想与之通信的计算机,而服务可以帮助标识计算机上特定的进程. 1.字节序 ...
- POJ 2002 Squares 解题报告(哈希 开放寻址 & 链式)
经典好题. 题意是要我们找出所有的正方形.1000点,只有枚举咯. 如图,如果我们知道了正方形A,B的坐标,便可以推测出C,D两点的坐标.反之,遍历所有点作为A,B点,看C,D点是否存在.存在的话正方 ...
- Ext2文件系统布局,文件数据块寻址,VFS虚拟文件系统
注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...
- C++反汇编与逆向分析技术揭秘
C++反汇编-继承和多重继承 学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...
- [译]反-反汇编 & 混淆 #1: 苹果没有遵循自己制定的Mach-O规范?
原文地址:http://reverse.put.as/2012/02/02/anti-disassembly-obfuscation-1-apple-doesnt-follow-their-own-m ...
- C++函数调用的反汇编过程及Thunk应用
x86汇编基础知识 1. 汇编常用寄存器 esp,(Extended stack pointer)栈顶指针.因为x86的栈内存是向下扩展的,因此当push入栈时,esp–.pop出栈时,esp++.e ...
随机推荐
- JS写一个旋转木马的视频播放效果
JS以及JQ的功能很强大,可以做出很多的优秀效果.今天给大家分享一个我之前写网站用到的旋转木马效果. 大概效果图就是这样的,上面的视频播放是旋转木马效果. 下面的音乐播放效果放在下一篇内容里面讲. 直 ...
- mysql批量插入更新操作
//添加关联赠品(确定) public function addGiveGoods($ids,$child,$parent_sku_no){ $license=new LicenseModel(); ...
- PHPExcel方法总结
下面是总结的几个使用方法include 'PHPExcel.php';include 'PHPExcel/Writer/Excel2007.php';//或者include 'PHPExcel/Wri ...
- 038、Java中逻辑运算之非运算“!”
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- angularJS MVC及$scope作用域
- 十七、React路由嵌套:头部导航+侧边导航
一.概述 实现功能:点首页,展示首页,同时在左侧有个首页的各个栏目导航:点用户,同首页: 二.代码实现 1. src/App.js import React from 'react'; import ...
- 《新标准C++程序设计》3.6-3.7(C++学习笔记9)
一.成员对象和封闭类 (1)定义 一个类的成员变量如果是另一个类的对象,就称之为“成员对象”. 包含成员对象的类叫封闭类. (2)封闭类构造函数的初始化列表 在构造函数中添加初始化列表的写法: 类名: ...
- centos7下使用yum安装ifconfig工具
步骤1:搜索安装包 步骤2:使用yum安装 至此,ifconfig工具安装完毕,希望对你有帮助~
- 类成员之迭代iter
class B: def __init__(self,name,age): self.name = name self.age = age #创建迭代方法 def __iter__(self): re ...
- mysql第六篇 : MySQL索引原理与慢查询优化
浏览目录 一.索引介绍 二.索引方法 三.索引类型 四.聚合索引和辅助索引 五.测试索引 六.正确使用索引 七.组合索引 八.注意事项 九.查询计划 十.慢日志查询 十一.大数据量分页优化 一.索引介 ...