逆向入门(一)
来源:互联网 发布:国通交规软件下载 编辑:程序博客网 时间:2024/06/05 11:02
本系列记录学习逆向的过程,以便之后回顾,参考书籍《逆向工程核心原理》。
0x00 基本环境
vc++ 6.0、吾爱破解工具包、xp
0x01 od的基本使用
入门程序使用的是最简单的helloword的c++代码,messagebox弹个框,源码如下:
#include "windows.h"#include "tchar.h"int _tmain(int argc, TCHAR *argv[]){ MessageBox(NULL, "Hello World!", "www.reversecore.com", MB_OK); return 0;}
od基本使用快捷键如下:
0x02 快速定位代码的几种方法
- 字符串检索
方法:鼠标右键点击查看-所有参考文本字串,找到在程序中出现的字符串,双击字符串,即可跳转到程序调用的地方
- API检索
方法:鼠标右键点击查找-所有模块间的调用,然后列出了所有的api,找到MessageBoxA,双击即可找到调用的地方。
3、api代码上下断点
方法:鼠标右键-查找-所有模块中的名称,然后输入MessageBoxA,找到use32中的函数然后双击,进入函数的实现代码,然后f2下断点,f9运行程序,会在该断点停下来。此时查看右边ESP指向的堆栈的值,即可找到程序的调用地址。
0x03 简单的程序修改
- 直接修改字符串缓存
找到字符串保存的地址:41f01c
选中字符串,然后ctrl+E,即可修改字符串
修改后,f9继续运行程序,即可看到修改后的程序。
该方式只是暂时的,无法保存字符串,如果要保存字符串则需要保存为另外一个程序。
选择刚才修改的字符串,然后点击右键,选择复制到可执行文件,在弹出的hex对话框,右键选择,保存文件,即可保存修改后的文件。
- 在其他内存区域新建字符串并传递给消息函数
找到程序中由NULL填充的区域内存,修改字符串,并记住地址。
找到messagebox中的push参数的地方,修改push地址,即可调用到修改后的地址
阅读全文
0 0
- 逆向入门(一)
- iOS逆向工程一:入门知识
- 逆向入门
- 逆向:Ucoresys.sys (一)
- powerdesigner15 逆向工程(一)
- c/c++逆向(一)
- Android逆向实例(一)
- 安卓逆向(一)
- 逆向学习笔记(一)
- 逆向工程(一):汇编、逆向工程基础篇
- 逆向工程(一):汇编、逆向工程基础篇
- 【逆向】逆向工厂(一):从hello world开始
- 【android逆向笔记】(一)简单登录逆向
- iOS逆向入门实践 — 逆向微信,伪装定位(一)
- iOS逆向入门实践 — 逆向微信,伪装定位(一)
- MyBatis入门(七)---逆向工程
- 逆向工程入门学习(FreeBuf)
- “煎蛋”Android版的高仿及优化(一)——逆向工程及TcpDump抓包入门
- Tomcat内存溢出解决办法
- zigbee学习笔记---Channel、PANID、发射功率及其它参数
- python检测mysql状态脚本--参考
- Java内存模型
- 20170629
- 逆向入门(一)
- float浮点数0.0和1.0在计算机内存中是怎么存的?
- Maven入门指南
- JavaFx入门教程(二)
- 单一职责原则
- 属性word-wrap与word-break的区别
- spring整合session出现问题
- 【源代码扫描工具-fortify SCA】-第一部:原理简介
- QT自定义进度条ProgressBar