逆向工程HelloWord《逆向工程核心原理》

2018-01-07  本文已影响0人  29a5cb0c6fb2

最近看了《逆向工程核心原理》第二章分析最著名的程序——HelloWord

《逆向工程核心原理》

本人也是小白,再次分享一下学习过程:

首先创建一个源文件的副本:

副本

预览一下修改后的文件和源文件:

源文件 修改后的文件

首先我们用Debugger打开bin文件:

OllyDbg

我用的是OD,载入程序后可以发现调试器自动定位到了EP处(Entry Point:入口点,是windows可执行文件(sys驱动,exe二进制,dll动态链接库)最先执行的代码在内存中的起始位置),这里基本是一些Stub Code(启动函数或称之为Start Code:是编译器为了保证代码可以被正常执行,自动创建的,不在我们的Source Code中。个人感觉大部分是调用的Win32 API)。

之后我们要找到要修改的内容在内存中的位置,根据程序的界面可以推断出程序大致用的代码,这里可以看到程序运行只有一个信息对话框,MesaageBox,可以判断出调用了User.MessageBoxW(),所以,我们搜索所有模块间调用

搜索模块间调用

如图显示出了所有的模块间调用,双击MessageBox即可跳转到调用处

此时我们已经找到了MessageBoxW,并且可以看到他的参数,以及参数的内存地址:

调用MessageBoxW()处

之后,我们只需要定位到参数的内存地址(409278~4092A0(开区间,H的起始地址))之后修改即可:

输入跟踪表达式

VA:Virtual Address虚拟内存地址

参数的字符串 替换字符串

之后运行即可看到显示结果:

替换字符串后的结果

之后保存修改:

保存修改1 保存修改2 保存修改3

当然你可也可以修改标题:

修改标题

小结:通过Buffer(字符串缓冲区)修改字符串有一定的危险性,当你修改的字符串大于原串时,会覆盖后面的内存,可能导致程序出错。当然也可以在新的空内存空间写入字符串之后修改汇编命令,当然如果想要正常成功运行exe还需要PE知识,这对于身为小白的我来说也是后话了。哈哈(ಡωಡ)

另外,这本书的资源都是要收费的,在此我奉献上宝贵的资源包括了源码和实例(找了一个多小时):http://www.pan.baidu.com/s/1i5s3kIp

密码:pqi6

上一篇下一篇

猜你喜欢

热点阅读