本帖最后由 苏紫方璇 于 2013-12-7 18:16 编辑
【文章标题】: 水淼万能文章采集器简单爆破
【文章作者】: 苏紫方璇
【加壳方式】: 未加壳
【使用工具】: PEID,exescope,E-Debug Events,OD
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
首先,先用peid查壳 显示VC6,没壳挺好的,介于现在易语言程序比较多,那就用exescope看下资源吧。 看到这个,很明显是易语言编写的程序,那么我们就可以用E-Debug Events 看下事件吧 用E-Debug Events运行程序,上面就开始记录事件地址,现在弹出注册框 上面这些地址不用看,基本上没有什么用,因为还没有按注册按钮,现在按下注册按钮 注册框消失,又多出了两个事件,记下这两个事件的地址,现在用od载入,下断004037CC和0041F319,运行程序,程序直接断在了004037CC这个位置 看来004037CC这个地方应该不是验证部分,因为他在push窗体,应该是显示窗体的部分。 我们继续运行,然后弹出注册窗口 注册码随便输入,单击注册,程序断下,这次应该就是关键验证部分了。 现在先大概浏览一遍,发现下边有push窗体,还有全局变量的赋值,还有条件转移指令跳过全局变量赋值,感觉很像注册的关键点,先记下这个位置。返回上边断下的位置,F8单步跟 单步跟到这里,发现程序将注册码赋给全局变量,下面是一个call,接着就是跳过给全局变量赋值的条件转移指令,很有可能就是关键call和关键跳 这里就直接将jnz改成nop看看,运行起来,注册成功了。 在反汇编窗口按右键--复制到可执行文件,保存下 运行保存后的文件,发现秒退,原来还有自校验,od再次载入,下断ExitProcess,运行程序,程序断下 断下后,选择右下角堆栈窗口中的第一个,按回车,返回到调用这个函数的call的下一行,我们看上一行,并在段首F2下断。 重新运行程序,程序断在刚才下断的位置,还是在右下角的堆栈窗口第一行按回车键返回 这里就是自校验的call了,想都不要想nop掉就可以了 然后保存文件,爆破到此结束。 ----------------------------------------------------------------------------
这里是之前遗漏的部分,在此我先向各位道歉,由于我是按照帖子最下边的修改,没有按照上面的教程修改,所以出现4楼@醉月清风 所说的错误
上面爆破完,我们会发现再次启动时,又会提示注册,这里我们来到当时没有跟进的关键call
按回车进入,在段首F2下断点
重新载入这个程序,程序会断下,像上面一样在右下角的那一行按回车返回
然后你会发现有一个眼熟的全局变量值,把上面的条件转移指令(我下断的那一行)给nop了就可以了。
由于当时自己做的时候是修改了对比call,所以没有发现还有重启验证。
-----------------------------------------------------------------------------
这个程序还有其他的爆破方法 例如:
爆破部分
[AppleScript] 纯文本查看 复制代码 0041D4E2 FF35 74A26200 push dword ptr ds:[0x62A274]
改成
[AppleScript] 纯文本查看 复制代码 0041D4E2 50 push eax
0041D4E3 90 nop
0041D4E4 90 nop
0041D4E5 90 nop
0041D4E6 90 nop
0041D4E7 90 nop
自校验部分
[AppleScript] 纯文本查看 复制代码 0046E30D /FF25 4C285100 jmp dword ptr ds:[0x51284C] ; 水淼·万.004988A0
改成
[AppleScript] 纯文本查看 复制代码 0046E30D C3 retn
0046E30E 90 nop
0046E30F 90 nop
0046E310 90 nop
0046E311 90 nop
0046E312 90 nop
这些地方大家可以想想为什么可以这样改,当然也希望大家可以跟帖交流。
如果大家觉得自己学到了什么,我很高兴,希望能给我评个分,如果感觉在这里面有什么错误,还请各位回帖指教
未 破解的软件地址: http://pan.baidu.com/s/1AGb9i
|