一个有趣的上位机程序,过自效验+提取资源脱壳+改写DLL破解
本帖最后由 ugvnui 于 2017-3-5 11:43 编辑今天在群里看到一个违规求破帖,当然已经被删除了,就不贴地址了。。闲来无事,下载下来瞧瞧,没成想还挺有意思的。。
原版程序下载地址:http://pan.baidu.com/s/1hsQJOOW
使用工具:OD + IDA + DLL函数查看器 + 解压脚本
查壳:MoleBox V2.X -> MoleStudio.com(有资源文件被压缩)
废话不多说,直接载入OD脱壳。
停留在:
0048CBD3 >E8 00000000 call 0048CBD8
0048CBD8 60 pushad
0048CBD9 E8 4F000000 call 0048CC2D
0048CBDE B5 85 mov ch,0x85
0048CBE0 A9 BF7BFEFD test eax,0xFDFE7BBF
0048CBE5 48 dec eax
MoleBox V2.X 壳到OEP比较容易,直接ESP定律搞定,,但是在Dump后,在修复IAT时会有很多无效指针。
此时,我们要修复这些IAT ,,其实也简单,只要找到Magic Jump 一切问题当迎刃而解啦。
下bp VirtualProtect 断点F9让程序跑起来。。。。 查看堆栈 (注意返回时机)(需要经过很长时间哦。。)
经过一个比较长时间的解码,此时来到这里。。
按Alt+F9 返回
上面的第一个je就是关键跳啦。。。我们下硬件执行断点。he 00494658
重新载入程序CTRL+F2
ESP定律 下好断点,F9让程序跑起来,,,此时程序会段在我们下好的硬件断点处00494658
我们将00494658|. /74 45 je short 0049469 修改为 00494658 /EB 45 jmp short 0049469F
取消00494658处硬件执行断点,F9继续跑。。
此时程序会按照ESP定律跑到程序OEP,,,当然上LordPE ImportREC 在这里就不多解释了。。
修复IAT后程序依然运行不起来,,因为程序有资源被压缩,需要将资源提取出来,即:REG.dll 、Skin.dll等皮肤资源及注册模块。
下面我们要将压缩的资源提出出来 ,使用到的脚本插件:MoleBox 2.xx Unpacker + OEP Finder v1.10 (后面会提供)
在程序根目录下会创建一个文件夹用来存放释放出来的dll等资源文件。。。我们将脱壳后的主程序及有用的文件一并复制到该目录下。
-------------------------------------------------------------------------------此时脱壳结束---------------------------------------------------------------------
但是我们运行后发现,程序会自动关机。。有自效验。。
继续载入OD,,下 bp GetFileSize 断点 F9运行,,程序断下,Alt+F9返回 F8单步向下走。到
00401A29 8B95 40F6FFFF mov edx,dword ptr ss:
00401A2F 81E2 FF000000 and edx,0xFF
00401A35 85D2 test edx,edx
00401A37 74 0A je short 00401A43 ; 这里关键,比对MD5是否相同,必须跳过
00401A39 C785 E4FEFFFF 0>mov dword ptr ss:,0x0
00401A43 6A 00 push 0x0
00401A45 E8 CD080300 call 00432317
00401A4A 83C4 04 add esp,0x4
00401A4D 50 push eax
一共有两处文件md5效验位置:
Ctrl+B 搜索二进制字符串:74 ?? C7 85 ?? FE FF FF 00 00 00 00 将je全部修改为jmp
此时程序效验已经搞定,,运行测试完美运行。。
-------------------------------------------------------------------------------此时去自效验重启验证结束---------------------------------------------------------------------
继续破解,,当然我这里采用另类破解方法啦,,直接替换reg.dll文件,,该程序所有的加密等效验均来自REG.DLL文件。。我们使用DLL函数查看器查看DLL中的所有方法
使用汇编语言重写DLL,,我这里使用的是E语言(后面会发源码)我们其实也就是伪造一个加密DLL过程,省去修改程序的时间,也省去调试的时间。。
【在这里大家可能会问,,如何知道对应函数的参数,,我们可以使用IDA来查看方法函数,万能的F5功能,会帮到你的】
将编译好的DLL替换目录的REG.DLL文件。。运行软件。。
【运行软件前一定要注册控件哦。。双击目录中的“注册.bat” 否则程序运行没任何反应的。】
上一张成功截图!!
至此该程序均已完美破解,,,没任何限制,,,虽然我闲来无事破解玩玩,,但是也同情发布该求破的那位朋友,,被处罚了吧。。下回一定要注意哦。论坛禁止求破的。。
当然写这东西太累,,如果你感觉有用得到的地方,请给点热心吧。。。在这里谢过大家了。。
附上所用到的工具:
朱朱你堕落了 发表于 2018-12-12 01:16
弱弱的问下大佬,IDA能查看带壳的DLL的函数的参数和方法函数吗?没有学过IDA,不知道啊。
不能,查函数需要无壳,
不过你可以尝试使用OD或者API Monitor试试,应该会有你要的东西。 那dll很眼熟,应该是一个公开的sdk dll,专门给别人计算一些信息用的,文章补充下调试dll怎么编写dll那些函数返回值的过程就更好了。 楼主大神 膜拜一下 嘿嘿,这帮助了别人,又顺便发了一贴秀一波,还有楼主头像不错 感觉过程挺复杂的,向大神学习。 谢谢分享,非常感谢。 谢谢分享,学习了 好腻害大牛,膜拜。关键是还帮了别人。 感谢楼主分享教程 楼主大神啊,膜拜下{:301_997:} 有舍工具可以快速扣出DLL的导出函数的?