【reverse】逆向3 寻找地址
【reverse】逆向3 寻找地址
寻址公式一:[立即数]
读取内存的值:
mov eax,dword prt ds:[0x13FFC4]
将内存编号为0x13FFC4、0x13FFC5、0x13FFC6、0x13FFC7的数据写入eax中
向内存中写入数据
mov dword prt ds:[0x13FFC4],eax
将eax的数据写入内存编号为0x13FFC4、0x13FFC5、0x13FFC6、0x13FFC7中
获取内存编号
lea eax,dword ptr ds:[0x13FFC4]
lea eax,dword prt ds:[edx]
获取0x13FFC4地址的内存编号(就是0x13FFC4)
获取edx的内存编号
寻址公式二:[reg]
reg代表寄存器,可以是8个通用寄存器中的任意一个
读取内存的值:
# 基址
mov ecx,0x13FFD0
# 找基址的数据
mov eax,dword prt ds:[ecx]
其实这个寻找公式的本质和第一个一样,只不过第一个是直接读取内存编号的数据
而这个是先把要找的内存地址放入一个寄存器中,在根据寄存器中存储的内存编号去寻找这个内存编号的数据
举个例子

第一句汇编将内存编号0x19FF74存入ecx中
第二句汇编将存入ecx中的内存编号的数据读取出来

我们先在堆栈窗口观察0019FF74编号的数据为7725FA29
我们运行第一句汇编

可以看到我们把0019FF74编号存入了ecx中
再运行第二句汇编

可以看到我们把0019FF74编号中的数据读到了eax中
向内存中写入数据
mov edx,0x13FFD8
mov dowrd ptr ds:[edx],0x87654321
向0x13FFD8这个内存编号中写入0x87654321这个数据
获取内存编号
mov eax,0x19FF74
lea ecx,dword ptr ds:[eax]
读取eax的内存编号(这里eax的内存编号是0x19FF74)

运行第一句汇编前

运行第一句汇编后,将0x19FF74内存编号存入eax

运行第二句汇编后,ecx中获取了eax的内存编号0x19FF74

寻址公式三:[reg+立即数]
读取内存中的值
mov ecx,0x19FF74
mov eax,dword ptr ds:[ecx+0x4]

公式3和公式2其实一样,只不过多了一个立即数的偏移量
第一句汇编是将0x19FF74内存编号存入ecx
第二句汇编是将ecx+0x4(0x19FF78)的内存编号的数据放入eax中
运行前的数据状况

运行第一句

运行第二句


可以发现eax中存入了0x0019FF78这个内存编号
向内存中写入数据
mov ecx,0x19FF74
mov dword prt ds:[ecx+0xC],0x87654321
向内存编号为0x19FF74+0xC写入0x87654321的数据
获取内存编号
lea eax,dword ptr ds:[ecx+0x8]
我们看这张图

lea是读取ecx+0x8的内存编号
而ecx是0x19FF74
所以如果运行了这句汇编,那么eax的那里将会存入0x19FF7C的内存编号

寻址公式四:[reg+reg*{1,2,4,8}]
读取内存的值
mov eax,0x13FFC4
mov ecx,0x2
mov edx,dword ptr ds:[eax+ecx*4]
第一句汇编,将0x13FFC4内存编号写入eax
第二句汇编,将0x2立即数写入ecx
第三句汇编,将eax+ecx*4(0x13FFC4+0x8 = 0x13FFCC)内存编号的数据写入edx
题外话:eax+ecx*4不会超过FFFFFFFF
向内存中写入数据
mov eax,0x13FFC4
mov ecx,0x2
mov dword ptr ds:[eax+ecx*0x4],0x87654321
第一句汇编,将0x13FFC4内存编号写入eax
第二句汇编,将0x2立即数写入ecx
第三句汇编,将eax+ecx*4(0x13FFC4+0x8 = 0x13FFCC)内存编号的值改为0x87654321
获取内存编号
mov eax,0x13FFC4
mov ecx,0x2
lea eax,dword ptr ds:[eax+ecx*4]
第一句汇编,将0x13FFC4内存编号写入eax
第二句汇编,将0x2立即数写入ecx
第三句汇编,将eax+ecx*4(0x13FFC4+0x8 = 0x13FFCC)内存编号写入eax,此时eax就是0x13FFCC
寻址公式五:[reg+reg*{1,2,4,8}+立即数]
读取内存的值
mov eax,0x13FFC4
mov ecx,0x2
mov edx,dowrd ptr ds:[eax+ecx*4+0x4]
第一句汇编,将0x13FFC4内存编号写入eax
第二句汇编,将0x2立即数写入ecx
第三句汇编,将eax+ecx*4+0x4(0x13FFC4+0x8+0x4 = 0x13FFD0)内存编号的数据写入edx
向内存中写入数据
mov eax,0x13FFC4
mov ecx,0x2
mov dowrd ptr ds:[eax+ecx*4+0x4],0x87654321
第一句汇编,将0x13FFC4内存编号写入eax
第二句汇编,将0x2立即数写入ecx
第三句汇编,将eax+ecx*4+0x4(0x13FFC4+0x8+0x4 = 0x13FFD0)内存编号的数据改为0x87654321
获取内存编号
mov eax,0x13FFC4
mov ecx,0x2
lea eax,dword ptr ds:[eax+ecx*4+0x4]
读取eax+ecx*4+0x4这个内存编号,也就是0x13FFD0
【reverse】逆向3 寻找地址的更多相关文章
- 【C++】从零开始的CS:GO逆向分析1——寻找偏移与基址的方法
[C++]从零开始的CS:GO逆向分析1--寻找偏移与基址的方法 前言:此文章主要用于提供方法与思路,fps游戏基本都能如此找偏移,文章里找的偏移比较少,主要用来演示寻找思路,文章的后记中会附一个 ...
- 行业干货-如何逆向解决QT程序汉化中乱码问题
前言 “一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码.面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解 ...
- historyReverser & array reverse
historyReverser & array reverse\ "use strict"; /** * * @author xgqfrms * @license MIT ...
- [BUUCTF]REVERSE——helloword
helloword 题目是安卓逆向.安卓逆向工具下载地址 用APKIDE打开附件,ctf+f调出检索版,检索main函数,能看到flag字符串 flag{7631a988259a00816deda84 ...
- html+css笔记
文档结构 1.html文档结构 ①文档类型声明 严格型(标准模式): <!DOCTYpE HTML> HTML5 XHTML 1.0:<!DOCTYpE html pUbL ...
- CTF:从0到1 -> zero2one
本篇blog首发0xffff论坛(CTF:从0到1->zero2one - 0xFFFF),中间有各位大佬补充,搬到了个人博客CTF:从0到1 -> zero2one | c10udlnk ...
- Linux查找命令:grep,awk,sed
grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
- 7.Java中的字符串
1.String的特性 特性一:不可变性 String s=new String("yangyun") s=s.toUpperCase(); 这里的s,s占用的空间是不一样的(地址 ...
- http协议(一)基础知识
我自己写的随笔一般是偏学习笔记性质的,或者一点个人理解,适合新人,大牛可以忽略这个...... 参考书籍——<图解http> 当我们在浏览器的地址栏中输入网址,然后点击回车,接着,浏览器就 ...
随机推荐
- Semaphore信号量源码解析
介绍 Semaphore是什么 Semaphore可以称为信号量,这个原本是操作系统中的概念,是一种线程同步方法,配合PV操作实现线程之间的同步功能.信号量可以表示操作系统中某种资源的个数,因此可以用 ...
- Oracle不等于符号过滤null情况
在Oracle查询过程中,条件查询时,用"<>"操作符进行查询会过滤掉字段为null的记录. 一.不使用"<>"操作符查询:select ...
- c(++)可变参数之格式化字符串
0.序言 使用printf函数,其参数就是可变参数.下面将使用 C语言 的库函数实现可变参数的函数 . 用途(欢迎补充): A.记录日志,可能需要将变量格式化输出到日志文件. B.格式化字符串,显示 ...
- 设计owllook网络小说推荐系统
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 数据 推荐算法 协同过滤 基于流行度的推荐 基于用户标签相似度的推荐 评价指标 算 ...
- 【LeetCode】915. Partition Array into Disjoint Intervals 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/partitio ...
- 在Latex 下写毕业论文
目录 配置 TeXlive 论文模板 TeXstudio 写作 特殊环境 算法 定理.定义 编译 可能出现的问题 参考文献 缺少volume 学位论文 配置 TeXlive 下载了最新的texlive ...
- Rikka with wood sticks(hdu5203)
Rikka with wood sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- 1370 - Bi-shoe and Phi-shoe
1370 - Bi-shoe and Phi-shoe PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 3 ...
- bugku的一道代码审计基础题:eval
首先看到 include "flag.php",第一反应就应该是文件包含 直接先?hello=file:////etc, 然后啥也没 那就再检查一下代码,eval(var_dump ...
- CS5211替代CH7511B|设计DP转LVDS转接板|替代CH7511B
CH7511B是一款DP转lvds屏转换芯片CH7511B是一款eDP转LVDS转换芯片.CH7511B将嵌入式DisplayPort信号转换为LVDS(低压差分信号).通过CH7511B的高级解码/ ...