原创:从逆向作品的结论出发,再逆向再研究:

突然在某论坛发现一个破解版本的按键精灵,

 1.启动退出无广告
 2.无需登录和联网生成小精灵
 3.小精灵无广告
 4.资源库直接导入

实际使用测试了下,他的汇编方法比我的方法要精练些,但广告的去除程度不如我的搞法彻底,最难容忍的是他的 按键精灵的启动补丁条没有NOP掉(如果你没有爆破的话,即使你使用的是正版的,按键精灵的启动速度也会直接拖慢)

已知:通过WinHEX分析得知:

1. 按键精灵9.XXexe:                      9,756,200 字节
2. 按键精灵9.XX破解版.exe:           9,756,200 字节
Offsets: 十六进制

 1B8: 9F 92          :4001b8                                 -----A
 1B9: D6 17

 1EC: 30 BE          :4001EC                             -----B

 1ED: 06 02

 2D8: 30 BE         :4002D8                              -----C

 2D9: 06 02

20D4: 0F E9         :004020D4     /E9 53040000   jmp     0040252C          -----D
20D5: 8E 53
20D6: 52 04
20D7: 04 00
20D9: 00 90

-----------------------------------------------

00402084   > \E8 B30C1100   call    <jmp.&MFC42.#CString::~CString_800>      1
00402089   >  8B46 10       mov     eax, dword ptr [esi+0x10]
0040208C   .  8D4E 08       lea     ecx, dword ptr [esi+0x8]
0040208F   .  3BC0          cmp     eax, eax
00402091   .  8B71 04       mov     esi, dword ptr [ecx+0x4]
00402094   .  8BC8          mov     ecx, eax
00402096   .  74 0E         je      short 004020A6
00402098   >  8B11          mov     edx, dword ptr [ecx]
0040209A   .  83C1 04       add     ecx, 0x4
0040209D   .  8916          mov     dword ptr [esi], edx
0040209F   .  83C6 04       add     esi, 0x4
004020A2   .  3BC8          cmp     ecx, eax
004020A4   .^ 75 F2         jnz     short 00402098
004020A6   >  8B4424 64     mov     eax, dword ptr [esp+0x64]
004020AA   .  8D78 08       lea     edi, dword ptr [eax+0x8]
004020AD   .  8BCF          mov     ecx, edi
004020AF   .  8B47 08       mov     eax, dword ptr [edi+0x8]
004020B2   .  50            push    eax
004020B3   .  56            push    esi
004020B4   .  E8 37220000   call    004042F0                               2
004020B9   .  8D6B 44       lea     ebp, dword ptr [ebx+0x44]
004020BC   .  8977 08       mov     dword ptr [edi+0x8], esi
004020BF   .  8BCD          mov     ecx, ebp
004020C1   .  C74424 14 000>mov     dword ptr [esp+0x14], 0x0
004020C9   .  896C24 28     mov     dword ptr [esp+0x28], ebp
004020CD      E8 FEF50A00   call    004B16D0                                3
004020D2   .  85C0          test    eax, eax
004020D4      0F8E 52040000 jle     0040252C           这里我们要改JMP的地方

-----------------------------------------

由DLL 看到一个返回用户处的地址,就是下面行的
eax=00483BB0 (Z3_备份.00483BB0)

00483E26      E8 6558FFFF   call    00479690                         ;  该死的启动补丁处 NOP了之后速度秒速
00483E2B   .  85C0          test    eax, eax
00483E2D   .  0F85 2F020000 jnz     00484062
00483E33   >  8D4C24 18     lea     ecx, dword ptr [esp+0x18]
00483E37   .  E8 142E0800   call    <jmp.&MFC42.#CString::CString_54>
00483E3C   .  68 78608300   push    00836078                         ;  ASCII "9.51.11790"
00483E41   .  8D5424 1C     lea     edx, dword ptr [esp+0x1C]
00483E45   .  68 99000000   push    0x99
00483E4A   .  52            push    edx
00483E4B   .  C68424 AC1000>mov     byte ptr [esp+0x10AC], 0x3
00483E53   .  E8 A6310800   call    <jmp.&MFC42.#CString::Format_281>
00483E58   .  83C4 08       add     esp, 0x8
00483E5B   .  8BCC          mov     ecx, esp
00483E5D   .  896424 28     mov     dword ptr [esp+0x28], esp
00483E61   .  68 18638300   push    00836318                         ;  ASCII "?lan=chs"

----------------------------------------

 

注:上述地址,你通过  虚拟地址转换工具,输入  1B8,你是不能正确得到偏移地址的,所以正确的做法是使用WinHEX看到的16进制机器码,F5到HIEW中得到

求证:将他的结论与我的结论结合,去掉不该有的

==========================

OD中,通过字串搜索 lan=chs

-------------------------

下面的地方下好断点:

00415F2A 按键精灵 始终 call    <jmp.&MFC42.#CString::Format_2818>
00415F41 按键精灵 始终 push    0084CABC 9.60.12177
0041A5EA 按键精灵 始终 push    0084CCA8 lan=chs&
0041AAA1 按键精灵 始终 push    0084CCA8 lan=chs&
00472C8B 按键精灵 始终 push    0084E3B8 ?lan=chs
0048AFDE 按键精灵 始终 call    00480210
0048AFF2 按键精灵 始终 call    <jmp.&MFC42.#CCommandLineInfo::~CCommandLineInfo_617>
0048B016 按键精灵 始终 call    <jmp.&MFC42.#CString::CString_540>
0048B040 按键精灵 始终 push    0084E3B8 ?lan=chs
00492983 按键精灵 始终 push    0084E3B8 ?lan=chs
004977C1 按键精灵 始终 push    0084E3B8 ?lan=chs
-------------------------之后F9开球~~~

你会断在这里:

0048AFDE      E8 2D52FFFF   call    00480210     ;但这里不是我们所要的地方

我们接着F9,因为有断点所以不怕跟丢~~

------------

00415F24   .  68 C8CA8400   push    0084CAC8                                                 ;  res://%s%s.EXE/bottom_bar_ad.htm
00415F29   .  52            push    edx
00415F2A   .  E8 4FCE0F00   call    <jmp.&MFC42.#CString::Format_2818>       是的,就是这里,我们可以下手了~~~ NOP掉

此时,程序的 补丁条被爆破掉,跟我搞的那个低版本效果一样了。

============================

============================

============================

 

 

未完,下面修补我自己的那个版本,未搞的几个地方。

 

 

文章为了交流汇编和逆向技术,所以不提供其他东东~~

按键精灵论坛大家要多多支持哟~~~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值