且行且远 » Blog Archive » 搞定了财智6的破解
且行且远
分类: 逆向手札 由 ssfighter 于 2008年11月3日 发表

用财智记账也挺长时间的了,以前用财智5,一直用王猛的破解补丁,整个v5的一直都很好用,不过现在财智6出来了,感觉这个版本比5人性化了许多,当然也有很多原来5的功能我到现在都不知道在哪儿。觉得财智6挺好的,本来打算买一份的结果没想到现在财智6采用按照授权时间来付费的方式了,3个月就50块钱,不是我这样的小烟酒僧承受得起的。网上有份破解,刚下载到电脑上,结果发现财智6更新了,原来的破解肯定是没法用在新版本上了,也懒得再到处找了,干脆自己破解一个算了。

财智6完全采用联网验证的方式来校验序列号。先脱壳,UPX的壳太简单了,秒脱。然后运行程序,会提示你升级,这是因为财智6在运行的时候会首先校验源程序文件的CRC等参数,然后把这个参数发到网上去进行联网验证,以此来判断版本号是不是正确以及是否需要升级。

0084D158    E8 AF59EFFF     call    00742B0C

联网验证部分都在上面这个call里,可以下MessageBoxA断点,然后往上找找,爆破掉这里的提示,就不会提示升级的问题了,不过这样也有个缺点,就是把升级的提示完全地ban掉了,需要升级的时候也没提示了。

然后再往下看

0084D1A6    8B45 FC         mov     eax, dword ptr [ebp-4]
0084D1A9    BA 10D68400     mov     edx, 0084D610                    ; ASCII "4201"
0084D1AE    E8 117FBBFF     call    <StrCmp>
0084D1B3    75 59           jnz     short 0084D20E

这里与4201比较,下面还有与6113比较等等地方,这里是对从网上获取的消息进行判断并提示的地方,4201告诉你软件版本过低,让你赶紧升级,这当然是由于脱壳导致的,所以爆掉84D1B3处就可以。再往下,

0084D3CC    E8 BFF32100     call    00A6C790
0084D3D1    84C0            test    al, al
0084D3D3    75 15           jnz     short 0084D3EA
0084D3D5    8D55 C8         lea     edx, dword ptr [ebp-38]
0084D3D8    A1 44B4A800     mov     eax, dword ptr [A8B444]
0084D3DD    8B00            mov     eax, dword ptr [eax]
0084D3DF    E8 A0FA2100     call    00A6CE84
0084D3E4    837D C8 00      cmp     dword ptr [ebp-38], 0
0084D3E8    EB 0E           jnz     short 0084D3F8
0084D3EA    33C9            xor     ecx, ecx
0084D3EC    33D2            xor     edx, edx
0084D3EE    A1 14D97300     mov     eax, dword ptr [73D914]
0084D3F3    E8 FC27EFFF     call    0073FBF4

84D3CC的这个call是计算该授权号剩余的天数的,往里跟两层,来到这里:

00A6CD24    53              push    ebx
00A6CD25    83C4 F8         add     esp, -8
00A6CD28    8BD8            mov     ebx, eax
00A6CD2A    8BC3            mov     eax, ebx
00A6CD2C    E8 6B010000     call    00A6CE9C
00A6CD31    DD1C24          fstp    qword ptr [esp]
00A6CD34    9B              wait
00A6CD35    E8 9A009AFF     call    0040CDD4
00A6CD3A    DC2C24          fsubr   qword ptr [esp]
00A6CD3D    D805 4CCDA600   fadd    dword ptr [A6CD4C]
00A6CD43    E8 8C6599FF     call    004032D4
00A6CD48    59              pop     ecx
00A6CD49    5A              pop     edx
00A6CD4A    5B              pop     ebx
00A6CD4B    C3              retn

这是一个完整的子程序,这里是计算剩余时间的,如果计算结果是负的,那就说明该授权已经过期了,不过注意到[A6CD4C]=1.0,所以只要把这里改成10000这样的比较大的数,就能保证授权不过期,至少在新版本出来前不会过期。这个call在程序中很多地方都会调用,所以只要改了[A6CD4C]的值,就能一下子爆掉程序内所有判断是否过期的校验。

再往回,看到84E3D8处的跳转,这里只要把jnz改成jmp,也就是说不call 73FBF4,就不会有授权已过期的提示了。

基本上暂时就发现了这些需要爆破的地方,改了应该就能一直使用财智6了。曾经想自己做个Loader,照着《加密与解密》书上的程序改的,但是就是不好用,目前我也找不出毛病到底在哪儿,不知道有没有高人可以帮我解决一下loader的问题?谢谢~

这篇文章只是我自己记录的财智6的破解过程,如果有想破解财智6的可以参考一下,并不是提供破解的。财智6升级很频繁,目前没什么一劳永逸的方法,谢谢大家对这篇博文的关注,但看到评论都是在讨论新版本怎么破解的,这并非我的本意,所以本文禁止评论,有兴趣讨论的欢迎来email,谢谢。

另外,如果我之前对谁的态度不好,在此表示抱歉。



ssfighter
2008年12月14日 13:46:48

@小鸡
那可能是你找错地方了。你是按照我的步骤找的吗?我的方法应该是没错的