首页 > 编程语言 >Ollydbg逆向分析并修改helloworld程序

Ollydbg逆向分析并修改helloworld程序

时间:2023-03-15 23:57:34浏览次数:74  
标签:逆向 helloworld 修改 查找 指令 字符串 Hello Ollydbg

原文:Ollydbg逆向分析并修改helloworld程序_lenlenlenerd的博客-CSDN博客

ollydbg逆向分析并修改helloworld程序
素材来源
实验内容
步骤1:VS2017生成需逆向的文件

 

 


步骤2:ollydbg中打开该程序的exe文件,找到需修改的位置

 

 


方法一:通过字符串查找

 

 

 

 

 

 


方法二:通过调用模块查找
步骤3:修改
修改一:修改指令
修改2:修改字符串
素材来源
来自于书籍《软件逆向工程原理与实践》。第一章的1.5节逆向分析并修改Hello World程序。本文主要是对自己走一遍该流程的记录。

实验内容
使用Ollydbg修改汇编指令,修改字符串。

步骤1:VS2017生成需逆向的文件
visual studio2017新建工程文件,编译程序时选择visual studio的Release模式,减少调试信息。点击本地windows调试器进行编译运行。


运行结果如下图:


步骤2:ollydbg中打开该程序的exe文件,找到需修改的位置

汇编代码窗口可以查看汇编指令,地址等相关信息;我们接下来所做的寻找操作都是在汇编代码窗口完成;
数据窗口可以进行数据修改,我们接下来所做的修改操作都是在数据窗口完成。
执行的修改都是在main函数中,比起一个一个运行。有两种方法可以比较方便的寻找到main函数的主体。

方法一:通过字符串查找
在汇编代码窗口点击右键,选择查找->所有的参考文本字串(英文版中是Search for->All referenced text string)。在被引用的列表中选择“www.xidian.edu.cn”或者是“Hello World!”双击字符串即可查找到这两个字符串的push操作。过程如下::


方法二:通过调用模块查找
在汇编代码窗口点击右键,选择查找->所有模块间的调用(英文版是Search for->All intermodular calls),在模块间调用API列表查找MessageBoxA()或MessageBoxW(),双击就可快速查找到对该函数的调用,从而找到main()函数。最后是MessageBoxA()或MessageBoxW()取决于编程的时候选择的字符集是多字节字符集还是Unicode字符集。过程如下图所示:

 


步骤3:修改
修改一:修改指令
可以做的第一个修改是对调界面上的“www.xidian.edu.cn”和“Hello world!”这两个字串的位置。简单的作法是对这两个字符串压栈的PUSH指令,将两条指令的地址互换。由图可知,两条push指令的地址分别是F8201B01和0C211B01。

在最左列可以看到,两条指令的地址在011B002。所有的修改操作都在数据区域执行。
在数据区域快捷键Crtl+G,搜索地址011B002,可以找到该地址,选中需要修改的区域,如下紫色部分。

快捷键Ctrl+E进入修改。

在编辑窗口修改该数据,将其修改为0C211B01,点击确定即可。如下图可知,修改成功。

同样的步骤对后面的0C211B01进行修改,修改为F8201B01。完成两条指令的交换。修改后汇编代码窗口可以观察到两者的变化。如下图所示:

最后选择被修改的区域,如下紫色部分,在数据区域右键->复制到可执行文件(英文版是Copy to executable file -> All modifications)。在生成的文件中右键->保存文件即可。


完成后获得的新exe程序的运行如下,可知对调成功。


修改2:修改字符串
将原来的“Helloworld”界面上的“Hello world!”字符串,更改为“Hello Student!”,利用步骤二中的方法可以找到该字符串的地址,同样在数据区域找到该位置,选择该区域,当然,由于“Hello Student!”比“Hello world!”要长,因此需要选择稍微大一点的区域,由于该条语句后面都是00,所以多选择区域不会造成错误。Ctrl+E修改。

直接对ASCII进行操作即可改变汇编代码指令。确定保存。

同样选择被修改的区域,保存成新的.exe文件。执行效果如下,可知修改成功。

————————————————
版权声明:本文为CSDN博主「lenlenlenerd」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35942306/article/details/98321623

标签:逆向,helloworld,修改,查找,指令,字符串,Hello,Ollydbg
From: https://www.cnblogs.com/bruce1992/p/17220709.html

相关文章

  • Ep1 逆向及Bof基础实践
    1逆向及Bof基础实践说明1.1实践目标本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串......
  • 【Android 逆向】frida 检测绕过
    1.aaa.apk安装到手机,是一个叫玩吧的应用./hooker......23248浏览器com.browser2345_oem32......
  • helloworld
    //对代码的相关说明//1.publicclasshello表示hello是一个类,是一个public公有的类//2.hello{}表示一个类的开始和结束//3.publicstaticvoidmain(String[]args表示一......
  • 20201306 Ep1 逆向及Bof基础实践
    1逆向及Bof基础实践说明1.1实践目标本次实践的对象是一个名为pwn1的linux可执行文件。该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串......
  • 【验证码逆向专栏】某验四代五子棋、消消乐验证码逆向分析
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切......
  • 几道rust逆向
    以前做了一两次rs题,唯一感觉就是这是什么大粪语言今天好好练一下,两个简单题和一个又臭又长的题checkin-rs用来入门rust逆向感觉挺不错的首先得找main函数但是这玩意......
  • 逆向工程
    1.软件汉化(.xml .arsc .dex):mt右上角高级搜索(全局搜索)字符 ——>.xml 文件开发者助手界面资源分析——> 点击需要汉化的文本复制,在MT全局搜索同......
  • 逆向-第二次实验
    本次实验内容是odbg爆破程序我使用的程序是爱盘-最新的在线破解工具包(52pojie.cn)  网上2020年的爆破教程,用的odbg也比较老这个中文版还可以下载解压之后先路......
  • js逆向——小红书请求头参数X-s逆向(附源码)
    今天搞了一波web端小红书请求头参数X-s的逆向,给大伙分享一下逆向思路。逆向网站:https://www.xiaohongshu.com/explore。界面如下:  这是逆向参数:  通过全局搜索,发......
  • 《渗透测试》算法分析&传输加密&数据格式&密文存储&代码混淆&逆向保护 2023 day8
           1数据在传输的时候为什么要进行编码   安全测试的时候往往会对url等地方进行修改、构造数据。数据传输的时候被编码的话,如果不按照对应编码......