逆向之 OEP的特点(附加逆向练习160题之001)

来源:互联网 发布:融资担保 知乎 编辑:程序博客网 时间:2024/06/06 04:57

可以从程序里找一些call的调用最终都会走到上面核心代码图位置(文字不太好表达),这个方法可以区分和VC的区别,非独立编译比较容易识别,入口特征和模块特征都有krnln.fnr。
拿到手一个exe 首先看他有没有加壳,要知道其是否加壳我们就得知道不同编译器编译出来的标准OEP是什么样子的。主流语言编译器包括VC,易语言,.net,delphi等等,及不常见得VB,asm等等。

一:VC6 标准OEP:

入口点代码是固定的代码(55 PUSH EBP),入口调用的API也是相同的,其中有的push地址不同程序可能不同;区段有四个也是固定的.text、.rdata、.data和.rsrc。

二:VS13之前标准OEP:

入口点只有两行代码,一个CALL后直接JMP,第一个CALL进去后调用的API也是相同的;区段相对于VC6多了一个.reloc。

三:易语言标准OEP:

(本人没学过E语言,目前也没逆过e程序,不太了解)可以从程序里找一些call的调用最终都会走到上面核心代码图位置(文字不太好表达),这个方法可以区分和VC的区别,非独立编译比较容易识别,入口特征和模块特征都有krnln.fnr。


001题:(网上关于这160道题的解答有很多,自己也来总结一下看看能不能加点点击量 (*^__^*) 嘻嘻……)

先用pe工具瞅瞅区段,恩~区段看起来正常。

双击打开 了解到八成是注册机之类的东东~ok 下面就该祭出OD开始逆了。

一路F9运行,如图:

不输入字符(因为我懒)保留默认字符,点击Check it Baby!提示TRY AGAIN,这时F12暂停并调用堆栈。

发现有两个MESSAGEBOX  其中一个地址7开头(一般在系统领空),一个004开头程序某模块调用(bingo!)
然后 右键 显示调用。
发现这么连续的一段。

在开始出(55 push ebp)和call messagebox出下断点。重新点击 Check it Baby!

右下窗口有返回值可以找到谁调用的 右键反汇编窗口跟随

一个判断跳jnz 一个强制跳jmp 于是乎把jnz处右键填充为nop 再次点击Check it Baby!一路运行(F9) ok!爆破成功!

***********************************************************************************************************************************

以上是爆破 那回头看这个程序肯定有一个算法是来根据name计算serial的下面我们就来分析这个注册机算法。

***********************************************************************************************************************************


我们重新运行到jnz 往上看 附近不远处有2个CALL 目测为判断对错或者为注册机算法 于是下断点,运行,F8步过,发现在 第二个CALL 处,EAX变的像点“人样”,说明他可能是关键的注册码CALL,下面对它的进行分析: 重新在call 0041AA58 下断,跟进分析 发现里面有很多重复调用此处的call而EAX却越来越不成“人样儿”。
如果他没在这个CALL中计算生成注册码 那一定是在上面不远处。 一路向北 看见call就下断 F8 再看EAX 最后在0042FA52出发现
下面还有 篇幅原因不予截图,总结算法为:取第一个字母的ASNI码,如11111111中第一个字符1对应数字0x31乘以0x29,再乘2,将得到的结果转为10进制的字符串,在前加上”CW-”,后加上”-CRACKED”,就组成了用户名对应的注册码。
**************************************************************************************************************************************************************
另一个单独Serial方法同上。
**************************************************************************************************************************************************************
总结 : 网上关于这160题的破解教程不少,本人一方面是初学者,另一方面总结一下原来的东西 温故知新嘛。破解和逆向有着很明显的不同 但他们最大的共同点是:要分清哪段是机器写的 哪段是人写的。                                                                                                                                                                        
                                                                                                                                                                                                                                 ------- 未完待续


0 0