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 ...
随机推荐
- obtainFreshBeanFactory方法源码跟踪
看这篇文章之前可以先了解之前的跟踪流程,https://www.jianshu.com/p/4934233f0ead 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 AbstractApplic ...
- gojs 部分功能实现
最近做的项目用到了gojs,使用了一段时间发现其功能特别强大,先记录下目前自己用到的把 1. 初始化画布 myDiagram = $(go.Diagram, "myDiagramDiv&qu ...
- setTimeout的异步
http://www.cnblogs.com/littledu/articles/2607211.html http://www.cnblogs.com/rubylouvre/archive/2009 ...
- Idea--使用Idea调试设置
参考 https://blog.csdn.net/yyjava/article/details/81453748 关闭一些Idea默认设置,否则懵逼到爆炸.. 1.关闭集合类视图 2.关闭watch视 ...
- 【pwnable.kr】 uaf
目测是比较接近pwnable的一道题.考察了uaf(use after free的内容),我觉得说白了就是指针没有初始化的问题. ssh uaf@pwnable.kr -p2222 (pw:guest ...
- 九十九、SAP中ALV事件之十二,给ALV的标题栏添加图片
一.在OAER中找一个喜欢的图片,对象标识为“TRVPICTURE04” 二.来到我们的代码区,输入代码 三.效果如下 很完美
- benchmark与gem5-gpu交互
gem5-gpu作为一个异构多核系统的模拟器,当我们使用异构融合多核处理器架构(特别是支持HSA的处理器架构)运行GPU与CPU的benchmark时,研究自己设计的算法或添加的硬件对GPU与CPU存 ...
- MacType
#前言 这几天实在是嫌弃Win10垃圾的字体渲染效果--发虚模糊,索性从网上找了个系统字体渲染软件即MacType给系统字体改头换面. #使用效果 这里贴出两个场景的效果对比(单击图片查看具体效果) ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-list-alt
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- mysql 深度分页
mysql 分页查询使我们常见的需求 ,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况.我们可以把分页分为两个步骤,1.定位偏移量,2.获取分页条数的 数据. 所以当数据较大页数较深时 ...