首页
社区
课程
招聘
[旧帖] [原创]爆破WorkPause V1.3 0.00雪花
发表于: 2007-3-27 22:17 3802

[旧帖] [原创]爆破WorkPause V1.3 0.00雪花

2007-3-27 22:17
3802
【文章标题】: 爆破WorkPause V1.3
【文章作者】: A-new
【作者QQ号】: 83540302
【软件名称】: WorkPause
【软件大小】: 104 KB
【下载地址】: http://www.newhua.com/soft/56667.htm
【加壳方式】: 无壳
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OllyICE,Regmon
【操作平台】: XP SP2
【软件介绍】: WorkPause是一款保健软件,可以定时提醒用户休息
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  今天进个群,那个群主说新来的都要破解个东东,那就随便拉一个破吧!
  
  只好WorkPause V1.3不走运了,呵呵
  
  废话结束,开工……
  
  运行程序,随便输入Name以及Key,
  (偶就输入name:A-new key:1111-1111-1111,好了)
  提示Invalid registration key or user name
  
  不管它,进去在看看,在about这里,显示
  This is an UNREGISTERED version
  It's been used for 5 days.
  
  汗~,真不厚道,偶刚下的,居然说已经用5天了(没素质,该他倒霉,^_^)
  
  OD载入,查找UNICODE,再找Invalid registration key or user name
  
  跟随,就到了这里
  
  004062E4   .  E8 8D360000   call    <jmp.&MFC42.#3876_CWnd::GetWindo>
  004062E9   .  85C0          test    eax, eax
  004062EB   .  75 0C         jnz     short 004062F9                   →不跳就显示没有输入用户名,JMP之
  004062ED   .  50            push    eax
  004062EE   .  50            push    eax
  004062EF   .  68 78084100   push    00410878                         ;  ASCII "No user name is entered"
  004062F4   .  E9 25010000   jmp     0040641E
  004062F9   >  8D9D 98010000 lea     ebx, dword ptr [ebp+198]
  004062FF   .  8BCB          mov     ecx, ebx
  00406301   .  E8 70360000   call    <jmp.&MFC42.#3876_CWnd::GetWindo>
  00406306   .  83F8 04       cmp     eax, 4
  00406309   .  0F85 06010000 jnz     00406415                          →跳就显示Key不对,nop之
  0040630F   .  8DBD 58010000 lea     edi, dword ptr [ebp+158]
  00406315   .  8BCF          mov     ecx, edi
  00406317   .  E8 5A360000   call    <jmp.&MFC42.#3876_CWnd::GetWindo>
  0040631C   .  83F8 04       cmp     eax, 4
  0040631F   .  0F85 F0000000 jnz     00406415                          →跳就显示Key不对,nop之
  00406325   .  8DB5 18010000 lea     esi, dword ptr [ebp+118]
  0040632B   .  8BCE          mov     ecx, esi
  0040632D   .  E8 44360000   call    <jmp.&MFC42.#3876_CWnd::GetWindo>
  00406332   .  83F8 04       cmp     eax, 4
  00406335   .  0F85 DA000000 jnz     00406415                          →跳就显示Key不对,nop之
  0040633B   .  8D4424 14     lea     eax, dword ptr [esp+14]
  0040633F   .  6A 05         push    5
  00406341   .  50            push    eax
  00406342   .  8BCB          mov     ecx, ebx
  00406344   .  E8 39360000   call    <jmp.&MFC42.#3873_CWnd::GetWindo>
  00406349   .  8D4C24 19     lea     ecx, dword ptr [esp+19]
  0040634D   .  6A 05         push    5
  0040634F   .  B3 2D         mov     bl, 2D
  00406351   .  51            push    ecx
  00406352   .  8BCF          mov     ecx, edi
  00406354   .  885C24 20     mov     byte ptr [esp+20], bl
  00406358   .  E8 25360000   call    <jmp.&MFC42.#3873_CWnd::GetWindo>
  0040635D   .  8D5424 1E     lea     edx, dword ptr [esp+1E]
  00406361   .  6A 05         push    5
  00406363   .  52            push    edx
  00406364   .  8BCE          mov     ecx, esi
  00406366   .  885C24 25     mov     byte ptr [esp+25], bl
  0040636A   .  E8 13360000   call    <jmp.&MFC42.#3873_CWnd::GetWindo>
  0040636F   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
  00406373   .  E8 9E320000   call    <jmp.&MFC42.#540_CString::CStrin>
  00406378   .  8D4424 10     lea     eax, dword ptr [esp+10]
  0040637C   .  8D8D D8010000 lea     ecx, dword ptr [ebp+1D8]
  00406382   .  50            push    eax
  00406383   .  C74424 34 000>mov     dword ptr [esp+34], 0
  0040638B   .  E8 EE330000   call    <jmp.&MFC42.#3874_CWnd::GetWindo>
  00406390   .  8B5424 10     mov     edx, dword ptr [esp+10]
  00406394   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
  00406398   .  51            push    ecx
  00406399   .  52            push    edx
  0040639A   .  E8 112F0000   call    004092B0
  0040639F   .  83C4 08       add     esp, 8
  004063A2   .  84C0          test    al, al
  004063A4   .  75 32         jnz     short 004063D8                     →不跳就显示用户名和Key不对,JMP之
  004063A6   .  6A 00         push    0
  004063A8   .  6A 00         push    0
  004063AA   .  68 50084100   push    00410850                         ;  invalid registration key or user name
  004063AF   .  E8 70330000   call    <jmp.&MFC42.#1200_AfxMessageBox>
  004063B4   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
  004063B8   .  C74424 30 FFF>mov     dword ptr [esp+30], -1
  004063C0   .  E8 3F320000   call    <jmp.&MFC42.#800_CString::~CStri>
  004063C5   .  5F            pop     edi
  004063C6   .  5E            pop     esi
  004063C7   .  5D            pop     ebp
  004063C8   .  5B            pop     ebx
  004063C9   .  8B4C24 18     mov     ecx, dword ptr [esp+18]
  004063CD   .  64:890D 00000>mov     dword ptr fs:[0], ecx
  004063D4   .  83C4 24       add     esp, 24
  004063D7   .  C3            retn
  004063D8   >  8B4C24 10     mov     ecx, dword ptr [esp+10]
  004063DC   .  8D4424 14     lea     eax, dword ptr [esp+14]
  004063E0   .  50            push    eax
  004063E1   .  51            push    ecx
  004063E2   .  E8 E92E0000   call    004092D0
  004063E7   .  83C4 08       add     esp, 8
  004063EA   .  8BCD          mov     ecx, ebp
  004063EC   .  E8 8B350000   call    <jmp.&MFC42.#4853_CDialog::OnOK>
  004063F1   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
  004063F5   .  C74424 30 FFF>mov     dword ptr [esp+30], -1
  004063FD   .  E8 02320000   call    <jmp.&MFC42.#800_CString::~CStri>
  00406402   .  5F            pop     edi
  00406403   .  5E            pop     esi
  00406404   .  5D            pop     ebp
  00406405   .  5B            pop     ebx
  00406406   .  8B4C24 18     mov     ecx, dword ptr [esp+18]
  0040640A   .  64:890D 00000>mov     dword ptr fs:[0], ecx
  00406411   .  83C4 24       add     esp, 24
  00406414   .  C3            retn
  00406415   >  6A 00         push    0
  00406417   .  6A 00         push    0
  00406419   .  68 34084100   push    00410834                         ;  invalid registration key
  0040641E   >  E8 01330000   call    <jmp.&MFC42.#1200_AfxMessageBox>
  00406423   .  8B4C24 28     mov     ecx, dword ptr [esp+28]
  00406427   .  5F            pop     edi
  00406428   .  5E            pop     esi
  00406429   .  5D            pop     ebp
  0040642A   .  5B            pop     ebx
  0040642B   .  64:890D 00000>mov     dword ptr fs:[0], ecx
  00406432   .  83C4 24       add     esp, 24
  00406435   .  C3            retn
  
  改完
  004062E9   .  85C0          test    eax, eax
  
  00406309   .  0F85 06010000 jnz     00406415
  
  0040631F   .  0F85 F0000000 jnz     00406415
  
  00406335   .  0F85 DA000000 jnz     00406415
  
  004063A4   .  75 32         jnz     short 004063D8
  这四处,保存一个运行看看情况,汗~,还要输入帐号密码,难道是传说中的重启验证,
  再随便输入一个名字和Key好了,接着输入name:A-new key:1111-1111-1111
  呵呵,这次不提示不对了,再启动一次,又要输入,还真的是再启动的时候验证啊
  查了一下,没有新建放注册信息的文件,用Regmon监测一下注册表发现
  
  [HKEY_CURRENT_USER\Software\Praven3 Software\WorkPause\Registration]
  "User Name"="A-new"
  "Registration Key"="1111-1111-1111"
  
  注册信息在注册表了,再用OD载入,刚才修改过的那个
  
  ctrl+n 查找函数,在
  RegQueryValueA
  RegQueryValueExA
  两个函数上,“在每个参考上设断点” ,F9 运行,断在这里
  
  0040922C  |.  FF15 00B04000 call    dword ptr [<&ADVAPI32.RegQueryVa>; \RegQueryValueExA
  00409232  |.  85C0          test    eax, eax
  00409234  |.  75 17         jnz     short 0040924D
  00409236  |.  8D4C24 20     lea     ecx, dword ptr [esp+20]
  0040923A  |.  51            push    ecx
  0040923B  |.  E8 30000000   call    00409270
  00409240  |.  2BF8          sub     edi, eax
  00409242  |.  83C4 04       add     esp, 4
  00409245  |.  3BDF          cmp     ebx, edi
  
  ……………………………………………
  
  0040925F  |. /7E 02         jle     short 00409263
  00409261  |. |8BC3          mov     eax, ebx
  00409263  |> \5F            pop     edi
  00409264  |.  5E            pop     esi
  00409265  |.  5D            pop     ebp
  00409266  |.  5B            pop     ebx
  00409267  |.  81C4 34010000 add     esp, 134
  0040926D  \.  C3            retn
  
  一直F8,返回到
  
  00408951   .  8B4424 18     mov     eax, dword ptr [esp+18]          ;  MFC42.73D3D000
  00408955   .  8BCE          mov     ecx, esi
  00408957   .  50            push    eax                              ; /Arg1
  00408958   .  E8 C3090000   call    00409320                         ; \WorkPaus.00409320
  0040895D   >  8A4424 18     mov     al, byte ptr [esp+18]
  00408961   .  84C0          test    al, al
  00408963   .  0F84 99000000 je      00408A02
  00408969   .  8B4F 20       mov     ecx, dword ptr [edi+20]
  0040896C   .  6A 00         push    0                                ; /lParam = 0
  
  F8到00408958这里的时候,居然注册窗口跳出来了
  
  那就向上拉,看看能不能跳过去
  
  0040893C   .  52            push    edx                              ; /hWnd
  0040893D   .  FF15 48B64000 call    dword ptr [<&USER32.UpdateWindow>; \UpdateWindow
  00408943   .  E8 B8050000   call    00408F00
  00408948   .  84C0          test    al, al
  0040894A   .  75 11         jnz     short 0040895D                    →这个刚好跳过
  0040894C   .  E8 BF070000   call    00409110
  00408951   .  8B4424 18     mov     eax, dword ptr [esp+18]          ;  MFC42.73D3D000
  00408955   .  8BCE          mov     ecx, esi
  00408957   .  50            push    eax                              ; /Arg1
  00408958   .  E8 C3090000   call    00409320                         ; \WorkPaus.00409320
  0040895D   >  8A4424 18     mov     al, byte ptr [esp+18]
  00408961   .  84C0          test    al, al
  00408963   .  0F84 99000000 je      00408A02
  
  在这里下断0040894A,取消其他断点,重新运行,断在
  
  0040894A   .  75 11         jnz     short 0040895D  
  
  让这个跳转实现(寄存器 Z 后面的 1 改为 0 就好了)
  
  接着F9,程序已运行,不跳出来让注册的窗口了,看来差不多了
  
  先改成 jmp 0040895D  保存一下,运行看看,
  
  已经基本搞定,但是
  about窗口显示:
  This is an UNREGISTERED version
  It's been used for 0 days.
  
  呵呵,变成0天了,但是还是没注册,接着搞吧
  
  找到字符串This is an ……
  
  00408FA7  |.  84C0          test    al, al
  00408FA9  |.  74 59         je      short 00409004                   →关键跳转,一跳就成没注册得了
  00408FAB  |.  8D4424 14     lea     eax, dword ptr [esp+14]
  00408FAF  |.  50            push    eax
  00408FB0  |.  E8 DB000000   call    00409090
  00408FB5  |.  83C4 04       add     esp, 4
  00408FB8  |.  8BF0          mov     esi, eax
  00408FBA  |.  8D4C24 10     lea     ecx, dword ptr [esp+10]
  00408FBE  |.  68 6C104100   push    0041106C                         ; /registered to:
  00408FC3  |.  BB 01000000   mov     ebx, 1                           ; |
  00408FC8  |.  51            push    ecx                              ; |Arg1
  00408FC9  |.  B9 50144100   mov     ecx, 00411450                    ; |
  00408FCE  |.  895C24 2C     mov     dword ptr [esp+2C], ebx          ; |
  00408FD2  |.  E8 69EBFFFF   call    00407B40                         ; \hh.00407B40
  00408FD7  |.  56            push    esi
  00408FD8  |.  8B7424 30     mov     esi, dword ptr [esp+30]
  00408FDC  |.  50            push    eax
  00408FDD  |.  56            push    esi
  00408FDE  |.  C64424 30 02  mov     byte ptr [esp+30], 2
  00408FE3  |.  E8 260B0000   call    <jmp.&MFC42.#922_operator+>
  00408FE8  |.  895C24 0C     mov     dword ptr [esp+C], ebx
  00408FEC  |.  8D4C24 10     lea     ecx, dword ptr [esp+10]
  00408FF0  |.  885C24 24     mov     byte ptr [esp+24], bl
  00408FF4  |.  E8 0B060000   call    <jmp.&MFC42.#800_CString::~CStri>
  00408FF9  |.  C64424 24 00  mov     byte ptr [esp+24], 0
  00408FFE  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
  00409002  |.  EB 6F         jmp     short 00409073                     →关键跳啊,这个实现就OK了
  00409004  |>  8D4C24 08     lea     ecx, dword ptr [esp+8]
  00409008  |.  E8 09060000   call    <jmp.&MFC42.#540_CString::CStrin>
  0040900D  |.  BB 03000000   mov     ebx, 3
  00409012  |.  895C24 24     mov     dword ptr [esp+24], ebx
  00409016  |.  E8 F5000000   call    00409110
  0040901B  |.  85C0          test    eax, eax
  0040901D  |.  7C 13         jl      short 00409032
  0040901F  |.  50            push    eax                                                   这里呢   
  00409020  |.  8D5424 0C     lea     edx, dword ptr [esp+C]                                  ↓
  00409024  |.  68 50104100   push    00411050                         ;  it's been used for %d days.registered to:
  00409029  |.  52            push    edx
  0040902A  |.  E8 AF070000   call    <jmp.&MFC42.#2818_CString::Forma>
  0040902F  |.  83C4 0C       add     esp, 0C
  00409032  |>  68 2C104100   push    0041102C                         ;  this is an unregistered version.\n
  00409037  |.  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
  0040903B  |.  E8 06060000   call    <jmp.&MFC42.#537_CString::CStrin>
  00409040  |.  8B7424 2C     mov     esi, dword ptr [esp+2C]
  00409044  |.  8D4C24 08     lea     ecx, dword ptr [esp+8]
  00409048  |.  51            push    ecx
  00409049  |.  50            push    eax
  0040904A  |.  56            push    esi
  0040904B  |.  C64424 30 04  mov     byte ptr [esp+30], 4
  00409050  |.  E8 B90A0000   call    <jmp.&MFC42.#922_operator+>
  00409055  |.  8D4C24 18     lea     ecx, dword ptr [esp+18]
  00409059  |.  C74424 0C 010>mov     dword ptr [esp+C], 1
  00409061  |.  885C24 24     mov     byte ptr [esp+24], bl
  00409065  |.  E8 9A050000   call    <jmp.&MFC42.#800_CString::~CStri>
  0040906A  |.  C64424 24 00  mov     byte ptr [esp+24], 0
  0040906F  |.  8D4C24 08     lea     ecx, dword ptr [esp+8]
  00409073  |>  E8 8C050000   call    <jmp.&MFC42.#800_CString::~CStri>
  00409078  |.  8B4C24 1C     mov     ecx, dword ptr [esp+1C]
  0040907C  |.  8BC6          mov     eax, esi
  0040907E  |.  5E            pop     esi
  
  把
  00408FA9  |.  74 59         je      short 00409004               
  NOP掉,保存,运行程序
  
  呵呵,终于看到
  Registered to:A-new
  了,搞定。偶水平菜追注册码,写注册机,留给有兴趣的朋友吧
  
--------------------------------------------------------------------------------
【经验总结】
  修改:
  004062E9 ;00406309 ;0040631F ;00406335 ;004063A4,破输入Name和Key时的即时验证
  0040894A,破重启验证(到这里已经可以用了)
  00408FA9,显示注册给XXX(看起来效果好点)
  关键是找到是从注册表中读取注册信息,下断,找到重启验证的关键跳转。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年03月27日 下午 10:13:15

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好文章,学习了!
2007-3-28 02:21
0
游客
登录 | 注册 方可回帖
返回
//