GeekCat 发表于 2014-6-29 18:08:52

【更新】文件批量重命名 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,转载请注明作者并保存文章的完整!


mod5689 发表于 2014-6-29 18:20:08

关键call你再确认下

GeekCat 发表于 2014-6-29 18:47:21

mod5689 发表于 2014-6-29 18:20
关键call你再确认下

谢谢指出
之前是我在做内存注册机问题理解有误
现在知道了!

老万 发表于 2014-6-29 20:21:00

学习了,谢谢分享

DaShanRen 发表于 2014-6-29 21:19:03

VB跟踪分析技术还有待提高。

醉月清风 发表于 2014-6-29 22:00:14

今天追码是追出了,但是爆破后重新运行 还是出现未注册 必须重新注册,后来没有时间搞了,现在也没有清楚是什么回事

cfc1680 发表于 2014-6-30 08:19:35

学习了,感谢分享啦

GeekCat 发表于 2014-6-30 08:48:02

DaShanRen 发表于 2014-6-29 21:19
VB跟踪分析技术还有待提高。

正在努力中,今天上午把这个程序再好好分析;分析好了再修改帖子!

GeekCat 发表于 2014-6-30 16:51:19

DaShanRen 发表于 2014-6-29 21:19
VB跟踪分析技术还有待提高。

今天重新把这个软件分析了,更新了帖子如果还有问题请指出;
对于算法目前能力还不够没有分析;

jeremy 发表于 2014-7-15 16:50:08

感谢,学习了!
页: [1] 2
查看完整版本: 【更新】文件批量重命名 V4.20 爆破+追码+Loader补丁