我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:一品彩票 > 反汇编程序 >

逆向工程浅谈:让程序从此不再“单调”

归档日期:05-02       文本归类:反汇编程序      文章编辑:爱尚语录

  说到逆向工程这个名词,对很多人来说是很难理解的。今天我就手把手教大家怎么用逆向工程。

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

  做以上的操作,我们需要的工具是Peid(侦壳工具),OllyDebug(动态反汇编工具,以下简称OD)和LordPE(一个修改程序入口的工具)还有一个精彩的exe格式的Flash。

  举个简单的例子,我们要做的就是Flash播放时,MM的QQ自动退出。完成这个功能要用到一个DOS命令“taskkill /im QQ.exe /f”,还要调用一个WinExec函数,这个函数的定义是运行一个指定的应用程序,即我们刚才的那个DOS命令。WinExec函数有两个参数,第一个是命令行,第二个是应用程序的窗口(当然是隐藏拉即SW_HIDE)

  用Peid查Flash的壳,呵,当然是没壳!我们要用的是它的另外一个功能:在Flash中找一段0区域来写入我们的代码。如图1,单击 “EP区段”右边的“》”按钮打开“节查看器”如图2所示。按鼠标右键选择“搜索全0处”,弹出一个“全0处信息”如图3所示,一共有4个空段,在里面我们只需记住“RVA”,RVA+基址400000=内存偏移地址(即后面我们要用的OD的地址)。

  我们再用OD载入Flash,OD停下,记住程序模块入口004DC300,我们等下要跳回来哦!按“Ctrl+G”在弹出的输入框中输入刚才那个0区域的起点即0053CC98,点确定后快步来到0区域,不要在起点这里写哦,向下3行来到0053CC9B。再把字符串“taskkill /im QQ.exe /f”写入这个地址,很显然这个地址不够写,我们就往下拉一块区域,然后点击“二进制编辑”,写入代码。

  我们不能把字符串压入堆栈,只能压入存放字符串的地址,所以等下把存放这些字符串的首地址压入就行了,即压入0053CC98(记住这个地址)。

  好继续往下跳3行来到0053CCB7(记住这个地址成了新程序的入口!),现在我们要调用API函数,而API函数是从右到左调用的,即反过来我们就要把第二个参数先压进去。先写“PUSH SW_HIDE”(也可以是PUSH 0,数字0代替SW_HIDE),再到“PUSH 0053CC9B”(压入刚才写字符串的首地址),最后“CALL WinExec”,再来一个大跳转回到原来程序的入口即“jmp 004DC300”。

  最后鼠标左键拉取全部已经修改过的代码,按右键依次选择“复制到可执行文件”→“选择”,保存退出。

  再将刚才PUSH 0的那个地址作为新程序入口,用LordPE修改保存。运行一下,QQ自动退出,Flash精彩播放,嘿嘿。

本文链接:http://explodingspec.com/fanhuibianchengxu/141.html