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 ...
随机推荐
- liunx mysql 5.7 二进制安装
liunx 5.6版本 本人安装次数不下20次,基本上按照正常的操作流程不会出现什么问题,一切顺利. 今天开发新项目需要按照mysql 5.7 版本.mysql 5.7版本和mysql 5.6版本变化 ...
- kubernetes 1.17.2 结合 Ceph 13.2.8 实现 静态 动态存储 并附带一个实验
关于部署和相关原理 请自行搜索 这里 给出我的操作记录和排查问题的思路 这一节对后面的学习有巨大的作用!!! [root@bs-k8s-ceph ~]# ceph -s cluster: -1a9a- ...
- 012、MySQL取本月第一天日期,取每个月的第一天日期
#取本月第一天 SELECT DATE_ADD( curdate( ), INTERVAL DAY ); #取往后几个月的第一天 , INTERVAL MONTH ); , INTERVAL MONT ...
- 012-PHP创建一个多维数组
<?php $Cities = array( //二维数组array() "华北地区"=>array( "北京市", "天津市" ...
- CANmonitor我自己编写的程序
这个版本的程序, 上位机可以对电机的转速进行在线的设定,同时上位机接受电机控制器上报的母线电压,电机温度,控制器温度等. 在调试的过程中我遇见了一个问题,电机的转速的采样 . 根据协议:电机的转速为1 ...
- (转)linux shell 的here document 用法 (cat << EOF)
什么是Here Documen: Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here Docu ...
- 九十二、SAP中ALV事件之六,复制一个标准工具栏到自己的程序
一.我们来到SE41,点击复制状态按钮 二.点击复制状态后,弹出一个框框,上面是模板内容,下面是我们自己的程序 三.我们根据上一篇的标准模板内容,填好相应的模板和我们的程序的内容 三.点击复制按钮 五 ...
- 038-PHP向返回的闭包函数实例中,传递外部变量参数
<?php # 向返回的闭包函数实例中,传递外部变量参数 # 直接调用将不会输出$txt的内容 function demo(){ $txt = '我爱PHP'; # 1.function()内的 ...
- 096-PHP循环使用next取数组元素
<?php function return_item($arr,$num=0){ //定义函数 for($i=0;$i<$num;$i++){ //循环向前移动数组指针 next($arr ...
- 记录一次SQLServer 2019 MDS问题的排查
问题表象: MDS网页里看不到任何建立的模型和实体. 用Excel add in连接,提示SQLServer授权过期. 但实际上SQLServer是企业版,目前并没有过期. 背景分析: 我们的环境是从 ...