【更新】文件批量重命名 V4.20 爆破+追码+Loader补丁
本帖最后由 geekcat 于 2014-6-30 17:27 编辑【文章标题】: 文件批量重命名 V4.20爆破+追码+Loader补丁【文章作者】: geekcat
【作者邮箱】: [email protected]
【作者主页】:
【软件名称】: 文件批量重命名 V4.20
【软件大小】: 1.80 MB (1,893,420 字节)
【加壳方式】: 无
【保护方式】: 注册码
【编写语言】: Microsoft Visual Basic 5.0 / 6.0
【使用工具】: OD、PEID
【操作平台】: XP SP3【下载地址】:http://www.crsky.com/soft/28815.html【破解声明】:破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
【软件介绍】:文件批量重命名软件是目前最方便快捷、功能最强大的文件批量重命名工具。 【破解声明】:今天中午时群里的@Mod5689 兄弟说拿个软件练习一下,一起交流思路,于是有这篇破文。
在这谢谢@mod5689 、@DaShanRen指出之前写的不足之处,以后如果有问题和足之处希望多多指出!--------------------------------------------------------------------------------------------------------------------------------【破解过程】
1、软件没有壳VB写的,直接OD载入F9运行输入注册信息后有错误提示 “注册码错误,请重新输入!”2、搜索字符串,找到错误提示双击来到汇编窗口,向上找到关键CALL和关键跳;代码:
004D002D .50 push eax004D002E .FF15 EC104000 call dword ptr ds:[<&MSVBVM60.#520>] ;msvbvm60.rtcTrimVar004D0034 .E8 6768FFFF call 文件批量.004C68A0 ;算法CALL调用 2注册时调用004D0039 .8945 88 mov dword ptr ss:,eax ;真码 (UNICODE "AFFX-FFR0-ADX2-EPL6")004D003C .C745 80 08800000 mov dword ptr ss:,0x8008004D0043 .8D4D 90 lea ecx,dword ptr ss:004D0046 .51 push ecx ; /var18004D0047 .8D55 80 lea edx,dword ptr ss: ; |004D004A .52 push edx ; |var28004D004B .FF15 44114000 call dword ptr ds:[<&MSVBVM60.__vbaVar> ; 比较真假码的关键CALLVB的比较函数 eax中出现真码 可做内存注册机004D0051 .66:8985 1CFFFFFF mov word ptr ss:,ax004D0058 .8D45 80 lea eax,dword ptr ss:004D005B .50 push eax004D005C .8D4D 90 lea ecx,dword ptr ss:004D005F .51 push ecx004D0060 .8D55 A0 lea edx,dword ptr ss:004D0063 .52 push edx004D0064 .6A 03 push 0x3004D0066 .FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFre> 004D006C 83C4 10 add esp,0x10004D006F 0FBF85 1CFFFFFFmovsx eax,word ptr ss:004D0076 85C0 test eax,eax004D0078 0F84 F2030000 je 文件批量.004D0470 ;关键跳004D007E .C745 FC 09000000 mov dword ptr ss:,0x9004D0085 .8B0D 58405200 mov ecx,dword ptr ds:………………………………………………………………………………………………………省略去中间N多代码004D0362 .8B08 mov ecx,dword ptr ds:004D0364 .898D 1CFFFFFF mov dword ptr ss:,ecx004D036A .68 7C3A4900 push 文件批量.00493A7C ;文件批量重命名 注册版004D036F .8B95 1CFFFFFF mov edx,dword ptr ss:004D0375 .8B02 mov eax,dword ptr ds:………………………………………………………………………………………………………省略去中间N多代码004D04AD .8D95 40FFFFFF lea edx,dword ptr ss:004D04B3 .8D4D 90 lea ecx,dword ptr ss:004D04B6 .FF15 90124000 call dword ptr ds:[<&MSVBVM60.__vbaVar>;msvbvm60.__vbaVarDup004D04BC .C785 58FFFFFF 98>mov dword ptr ss:,文件批量.00493>;注册码错误,请重新输入!004D04C6 .C785 50FFFFFF 08>mov dword ptr ss:,0x8004D04D0 .8D95 50FFFFFF lea edx,dword ptr ss:004D04D6 .8D4D A0 lea ecx,dword ptr ss:004D04D9 .FF15 90124000 call dword ptr ds:[<&MSVBVM60.__vbaVar>;msvbvm60.__vbaVarDup004D04DF .8D8D 70FFFFFF lea ecx,dword ptr ss:
3、F7进 算法CALL,此时看到有三处调用分别为: 1)004C6603 .E8 98020000 call 文件批量.004C68A0 ;启动验证调用 调用 1 2)004D0034 .E8 6768FFFF call 文件批量.004C68A0 ;注册验证调用 调用 2 3)004D09E0 .E8 BB5EFFFF call 文件批量.004C68A0 ;关于功能调用 调用 34、来到三处的段分别下断,得重程序F9运行,断在启动和注册的段首,F8向走程序检安装目录下"User"文件夹下文件名为“renamefile.txt”的Key文件是否存在,如Key不存在就跳向注册,如果存在就向下走来到验证Key文件里的注册信息是否正确;代码:
004C637D .8BD0 mov edx,eax004C637F .8D4D C8 lea ecx,dword ptr ss:004C6382 .FF15 BC124000 call dword ptr ds:[<&MSVBVM60.__vbaStr>;msvbvm60.__vbaStrMove004C6388 .8D4D C0 lea ecx,dword ptr ss:004C638B .FF15 04134000 call dword ptr ds:[<&MSVBVM60.__vbaFre>;msvbvm60.__vbaFreeStr004C6391 .8D4D B8 lea ecx,dword ptr ss:004C6394 .FF15 08134000 call dword ptr ds:[<&MSVBVM60.__vbaFre>;msvbvm60.__vbaFreeObj004C639A .C745 FC 03000000 mov dword ptr ss:,0x3004C63A1 .6A FF push -0x1 ; /OnErrEvent = Resume Next004C63A3 .FF15 C0104000 call dword ptr ds:[<&MSVBVM60.__vbaOnE>; \__vbaOnError004C63A9 .C745 FC 04000000 mov dword ptr ss:,0x4004C63B0 .8D4D C8 lea ecx,dword ptr ss:004C63B3 .51 push ecx004C63B4 .E8 87FDFFFF call 文件批量.004C6140 ;验证Ke文件是否存在004C63B9 0FBFD0 movsx edx,ax004C63BC .85D2 test edx,edx004C63BE .0F84 6A030000 je 文件批量.004C672E ;如Key不存在就跳向注册,如果存在就向下走来到验证Key文件里的注册信息是否正确;004C63C4 .C745 FC 05000000 mov dword ptr ss:,0x5004C63CB .8B45 C8 mov eax,dword ptr ss:
5、以下分别为三处调用验证处:代码:1)、启动验证调用 调用 1004C6602 .51 push ecx004C6603 .E8 98020000 call 文件批量.004C68A0 ; 启动验证 调用算法CLL 1004C6608 .8BD0 mov edx,eax004C660A .8D4D BC lea ecx,dword ptr ss:004C660D .FF15 BC124000 call dword ptr ds:[<&MSVBVM60.__vbaStr>;msvbvm60.__vbaStrMove004C6613 .50 push eax004C6614 .FF15 F4104000 call dword ptr ds:[<&MSVBVM60.__vbaStr>;msvbvm60.__vbaStrTextCmp004C661A .F7D8 neg eax004C661C .1BC0 sbb eax,eax004C661E .40 inc eax004C661F .F7D8 neg eax004C6621 .66:23F0 and si,ax004C6624 .66:8975 80 mov word ptr ss:,si004C6628 .8D55 BC lea edx,dword ptr ss:004C662B .52 push edx004C662C .8D45 C0 lea eax,dword ptr ss:004C662F .50 push eax004C6630 .6A 02 push 0x2004C6632 .FF15 50124000 call dword ptr ds:[<&MSVBVM60.__vbaFre>;msvbvm60.__vbaFreeStrList004C6638 .83C4 0C add esp,0xC004C663B 0FBF4D 80 movsx ecx,word ptr ss:004C663F .85C9 test ecx,ecx004C6641 0F84 E2000000 je 文件批量.004C6729 ;爆破点:关键跳 修改为: je 004C6647004C6647 .C745 FC 0C000000 mov dword ptr ss:,0xC
2)注册验证调用 调用 2 004D002E .FF15 EC104000 call dword ptr ds:[<&MSVBVM60.#520>] ;msvbvm60.rtcTrimVar004D0034 .E8 6768FFFF call 文件批量.004C68A0 ; 算法CALL调用 2注册时调用004D0039 .8945 88 mov dword ptr ss:,eax ;真码 (UNICODE "AFFX-FFR0-ADX2-EPL6")004D003C .C745 80 08800000 mov dword ptr ss:,0x8008004D0043 .8D4D 90 lea ecx,dword ptr ss:004D0046 .51 push ecx ; /var18004D0047 .8D55 80 lea edx,dword ptr ss: ; |004D004A .52 push edx ; |var28004D004B .FF15 44114000 call dword ptr ds:[<&MSVBVM60.__vbaVar>; \ ;关键CALLVB的比较函数 eax中出现真码 可做内存注册机004D0051 .66:8985 1CFFFFFF mov word ptr ss:,ax004D0058 .8D45 80 lea eax,dword ptr ss:004D005B .50 push eax004D005C .8D4D 90 lea ecx,dword ptr ss:004D005F .51 push ecx004D0060 .8D55 A0 lea edx,dword ptr ss:004D0063 .52 push edx004D0064 .6A 03 push 0x3004D0066 .FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFre>; 004D006C 83C4 10 add esp,0x10004D006F 0FBF85 1CFFFFFFmovsx eax,word ptr ss:004D0076 85C0 test eax,eax004D0078 0F84 F2030000 je 文件批量.004D0470 ; 爆破点: 关键跳修改为:je 004D007E004D007E .C745 FC 09000000 mov dword ptr ss:,0x9
3)关于功能调用 调用 3 004D09DA .FF15 F4124000 call dword ptr ds:[<&MSVBVM60.__vbaAry>;msvbvm60.__vbaAryUnlock004D09E0 .E8 BB5EFFFF call 文件批量.004C68A0 ; 算法CALL调用 3关于功能004D09E5 .8945 B4 mov dword ptr ss:,eax004D09E8 .C745 AC 08800000 mov dword ptr ss:,0x8008004D09EF .8D4D BC lea ecx,dword ptr ss:004D09F2 .51 push ecx ; /var18004D09F3 .8D55 AC lea edx,dword ptr ss: ; |004D09F6 .52 push edx ; |var28004D09F7 .FF15 44114000 call dword ptr ds:[<&MSVBVM60.__vbaVar>; \__vbaVarTstEq004D09FD .66:8945 80 mov word ptr ss:,ax004D0A01 .8D45 AC lea eax,dword ptr ss:004D0A04 .50 push eax004D0A05 .8D4D BC lea ecx,dword ptr ss:004D0A08 .51 push ecx004D0A09 .6A 02 push 0x2004D0A0B .FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaFre>;msvbvm60.__vbaFreeVarList004D0A11 .83C4 0C add esp,0xC004D0A14 0FBF55 80 movsx edx,word ptr ss:004D0A18 85D2 test edx,edx004D0A1A 0F84 F4020000 je 文件批量.004D0D14 ; 爆破点: 关键跳修改为:je 004D0A20004D0A20 .C745 FC 0C000000 mov dword ptr ss:,0xC
6、同时修改以上三处跳转保存达到爆破;
7、机器码:1326-6360-1288-5849注册码:AFFX-FFR0-ADX2-EPL6
----------------------------------------------------------------------------------------------------------------------------【破解总结】:1、字符串没加密,容易切入注册验证流程中;
2、从Key文件下手,可以下API断点切入验证体系,我们一看到那个叫"User"文件夹的名字(可理解为放用户信息用)跟里面是为空(隐藏属性),要能联想得到注册信息,这个慢慢总结吧;----------------------------------------------------------------------------------------------------------------------------【版权声明】:本文原创于geekcat,转载请注明作者并保存文章的完整!
关键call你再确认下 mod5689 发表于 2014-6-29 18:20
关键call你再确认下
谢谢指出
之前是我在做内存注册机问题理解有误
现在知道了!
学习了,谢谢分享 VB跟踪分析技术还有待提高。 今天追码是追出了,但是爆破后重新运行 还是出现未注册 必须重新注册,后来没有时间搞了,现在也没有清楚是什么回事 学习了,感谢分享啦 DaShanRen 发表于 2014-6-29 21:19
VB跟踪分析技术还有待提高。
正在努力中,今天上午把这个程序再好好分析;分析好了再修改帖子!
DaShanRen 发表于 2014-6-29 21:19
VB跟踪分析技术还有待提高。
今天重新把这个软件分析了,更新了帖子如果还有问题请指出;
对于算法目前能力还不够没有分析;
感谢,学习了!
页:
[1]
2