探索黑客技术攻防,实战研究与安全创新

导航菜单

小小逆向工程整美眉

逆向工程,对很多人来说是很难理解的。今天我叫我手把手教大家怎么使用逆向工程去整美眉。

当然我们在开始之前,我得先给大家讲一下思路,要不然大家都不理解那怎么做啊!大家只要明白思路再扩展开来就会有很多意想不到的收获。我们在一个正常合法的程序上附加一段代码,通过修改源程序的入口点跳到我们加的那段代码上,执行完成我们的代码之后再跳回原来那个正常程序继续执行。

QQ截图20170103141112.png

需要的工具就是peid(侦壳工具)、ollydebug(动态反汇编工程,以下简称od)和lordpe(一个修改程序入口的工具)还有一个精彩的exe格式的flash。

举个简单的例子,目的是在flash播放时,美眉的QQ自动退出。完成这个功能要调用一个系统命令taskkill /im QQ.exe /f,还要调用一个winexec函数,这个函数的定义是运行一个指定的应用程序,就是我们刚才的那个系统命令。winexec函数有两个参数,第一个是命令行,第二个是应用程序的窗口(当然是隐藏即sw_hide)。

我们使用peid检查flash的壳,没有加壳。

我们用的是它另外的一个功能:在flash中找一段0区域来写我们的代码。单击ep区段右边的“》”按钮打开节查看器。

按鼠标右键选择搜索全0处,弹出一个全0处信息。一共有4个空段,在里面我们只需记住“rva”,rva+基址400000=内存偏移地址(这个后面我们要用的od的地址)。现在选取text区段的0区域,rva为0013cc98,rva+基址400000=0053cc98就是0区域的起点。

打开od载入flash,od停下,记住程序模块入口004dc300,我们等下要跳回来的。按“ctrl+g”在弹出的输入框中输入刚才那个0区域的起点即0053cc98,点确定后快步来到0区域。不要在起点这里写,向下三行来到0053cc9b。再把字符串“taskkill /im qq.exe /f”写入这个地址,很显然这个地址不够写,我们就往下拉一块区域,然后点击二进制编辑,写入代码。我们不能把字符串压入堆栈,只能压入存放字符串的地址,所以等下要把存放这些字符串的首地址压入就行了,就是压入0053cc98(大家一定要就记住这个地址)。

QQ截图20170103141150.png

继续往下跳三行来到0053ccb7(这个地址成了新程序的入口),现在我们要调用api函数,而api函数是从右到左调用的,即反过来,我们就要把第二个参数先压进去。先写“push sw_hide”(也就是push 0,数字0代替sw_hide),再到“push0053cc98”(压入刚才写字符串的首地址),最后“call winexec”,再来一个大跳转回到原来程序的入口就是“jmp 004dc300”,写完后就会出现一串提示。

最后鼠标左键拉取全部已经修改过的代码,按右键依次选择“复制到可执行文件”——“选择”,保存退出od。我们再将刚才push 0的那个地址作为新程序入口,使用lordpe修改保存后运行一下,QQ自动退出,flash精彩播放,很简单吧!

大家可以拓展一下,添加账号,开启端口,删除文件什么的都可以。但是大家千万不要玩得太过火,逗逗美眉就可以了。

本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法行为。