| 
注册时间2005-6-29
阅读权限255
最后登录1970-1-1UID2198 副坛主   
 
 该用户从未签到 | 
 
| 软件大小:1132KB 人气指数:70
 软件语言:英文
 软件授权:共享版
 运行环境:Winxp/vista/win7/2000/2003
 更新时间:2010-4-12 16:44:14
 
 HomePage:http://www.foryoursoft.com/
 华军下载:http://nj.newhua.com/soft/45172.htm
 
 程序无壳,注册部分为网络验证,我们换一种思路绕过网络验证来实现暴破。
 
 
 01. 程序注册部分为网络验证,我们跳过,直接突破其功能限制:
 
 点程序About:
 
 00404F00   .  E8 7BC00200   CALL RegHelp.00430F80  // 程序是否注册的验证call
 00404F05   .  83C4 08       ADD ESP,8
 00404F08   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
 00404F0C   .  84C0          TEST AL,AL
 00404F0E   .  0F85 9E000000 JNZ RegHelp.00404FB2
 00404F14   .  6A 44         PUSH 44
 00404F16   .  68 B05F4600   PUSH RegHelp.00465FB0                          ;  This is an free trial version with time and/or function limitations.
 
 Here:
 00430F80      6A FF         PUSH -1
 00430F82      68 60284600   PUSH RegHelp.00462860                          ;  咋
 
 该call有三处调用 :Local calls from 00404F00, 0042EADC, 0042EB04
 
 我们直接处理掉
 mov eax,1
 retn
 
 /////////////
 
 关于这三处调用 大家可以下断点来分析一下
 
 启动时第一处调用:
 
 0042EADC  |.  E8 9F240000   CALL RegHelp.00430F80
 0042EAE1  |.  83C4 08       ADD ESP,8
 0042EAE4  |.  84C0          TEST AL,AL                   // 这里比较函数返回值
 0042EAE6  |.  74 05         JE SHORT RegHelp.0042EAED
 0042EAE8  |.  C606 01       MOV BYTE PTR DS:[ESI],1       // 这里的赋值很重要哦 ~
 0042EAEB  |.  EB 05         JMP SHORT RegHelp.0042EAF2
 
 /////////////
 
 02. 程序还有一处效检,这里我们通过UNICODE字符串来快速定位
 
 0042EB60   $  55            PUSH EBP
 0042EB61   .  8BEC          MOV EBP,ESP
 ……
 ……
 ……
 0042ECD9   .  8965 E0       MOV DWORD PTR SS:[EBP-20],ESP
 0042ECDC   .  68 80FF4600   PUSH RegHelp1.0046FF80                         ;  this copy is unauthorized, and will be auto terminated within 10 seconds. please contact our technical support at http://www.for
 0042ECE1   .  E8 1A3BFDFF   CALL RegHelp1.00402800
 0042ECE6   .  68 10270000   PUSH 2710
 0042ECEB   .  E8 00F1FDFF   CALL RegHelp1.0040DDF0
 0042ECF0   .  83C4 10       ADD ESP,10
 0042ECF3   .  90            NOP
 0042ECF4   .  51            PUSH ECX
 0042ECF5   .  8BCC          MOV ECX,ESP
 0042ECF7   .  8965 E0       MOV DWORD PTR SS:[EBP-20],ESP
 0042ECFA   .  68 28FF4600   PUSH RegHelp1.0046FF28                         ;  http://www.foryoursoft.com/faq.htm?RHP#4
 0042ECFF   .  E8 FC3AFDFF   CALL RegHelp1.00402800
 0042ED04   .  E8 1738FEFF   CALL RegHelp1.00412520
 0042ED09   .  83C4 04       ADD ESP,4
 0042ED0C   .  90            NOP
 0042ED0D   .  6A 00         PUSH 0                                         ; /ExitCode = 0
 0042ED0F   .  FF15 90424600 CALL DWORD PTR DS:[<&KERNEL32.ExitProcess>]    ; \ExitProcess
 
 该函数有一处调用: Local call from 0042F676
 
 0042F630      55            PUSH EBP                                       ;  这里直接retn掉
 0042F631   .  8BEC          MOV EBP,ESP
 0042F633   .  6A FF         PUSH -1
 0042F635   .  68 20254600   PUSH RegHelp1.00462520
 0042F63A   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
 0042F640   .  50            PUSH EAX
 0042F641   .  51            PUSH ECX
 0042F642   .  53            PUSH EBX
 0042F643   .  56            PUSH ESI
 0042F644   .  57            PUSH EDI
 0042F645   .  A1 4C324800   MOV EAX,DWORD PTR DS:[48324C]
 0042F64A   .  33C5          XOR EAX,EBP
 0042F64C   .  50            PUSH EAX
 0042F64D   .  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
 0042F650   .  64:A3 0000000>MOV DWORD PTR FS:[0],EAX
 0042F656   .  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
 0042F659   .  8B7D 08       MOV EDI,DWORD PTR SS:[EBP+8]
 0042F65C   .  8B1D 8C424600 MOV EBX,DWORD PTR DS:[<&KERNEL32.Sleep>]       ;  kernel32.Sleep
 0042F662   .  897D 08       MOV DWORD PTR SS:[EBP+8],EDI
 0042F665   .  BE 60EA0000   MOV ESI,0EA60
 0042F66A   .  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
 0042F671   >  56            PUSH ESI
 0042F672   .  FFD3          CALL EBX
 0042F674   .  8BCF          MOV ECX,EDI
 0042F676   .  E8 E5F4FFFF   CALL RegHelp1.0042EB60   // 调用那个来自这里
 
 03. 去程序的效检暗桩继续分析
 
 我们观察下关键CALL的第二处调用
 
 0042EB04  |.  E8 77240000   CALL RegHelp1.00430F80           // 第二处调用
 0042EB09  |.  83C4 08       ADD ESP,8
 0042EB0C  |.  8806          MOV BYTE PTR DS:[ESI],AL
 0042EB0E  |> \837E 08 00    CMP DWORD PTR DS:[ESI+8],0                     ;  这个比较很猥琐哈
 0042EB12      75 19         JNZ SHORT RegHelp1.0042EB2D                    ;  把这里修改为JMP
 0042EB14  |.  8D4D EC       LEA ECX,DWORD PTR SS:[EBP-14]
 0042EB17  |.  51            PUSH ECX                                       ; /pThreadId
 0042EB18  |.  6A 00         PUSH 0                                         ; |CreationFlags = 0
 0042EB1A  |.  56            PUSH ESI                                       ; |pThreadParm
 0042EB1B  |.  68 30F64200   PUSH RegHelp1.0042F630                         ; |ThreadFunction = RegHelp1.0042F630
 0042EB20  |.  6A 00         PUSH 0                                         ; |StackSize = 0
 0042EB22  |.  6A 00         PUSH 0                                         ; |pSecurity = NULL
 0042EB24  |.  FF15 9C424600 CALL DWORD PTR DS:[<&KERNEL32.CreateThread>]   ; \CreateThread
 
 PUSH RegHelp1.0042F630                         ; |ThreadFunction = RegHelp1.0042F630
 
 这里是线程函数的地址,跟我们上方对比一下 /:017  JMP掉这里就OK了
 
 ---------------------------------
 
 这样基本上把比较明显的一些功能限制就去掉了 程序为keyfile(pid.bin)的验证方式 有时间的朋友可以继续深究  这里我就点到为止了 ~~
 
 
 
   | 
 |