美文网首页
逆向工程HelloWord《逆向工程核心原理》

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

作者: 29a5cb0c6fb2 | 来源:发表于2018-01-07 17:42 被阅读0次

    最近看了《逆向工程核心原理》第二章分析最著名的程序——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

    相关文章

      网友评论

          本文标题:逆向工程HelloWord《逆向工程核心原理》

          本文链接:https://www.haomeiwen.com/subject/nekmnxtx.html