- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
HomePage:http://www.livepim.com/pd-undelete/
我们多拿一些国外的注册程序做分析,旨在分析其加密的优势和不足。这个程序比较简单,无壳,适合新手练手。
入门阶段,贵在坚持。我争取每周都分析一款软件,有时间的话就分析一下算法。我分析的文章大都分析的比较匆促,大家如有问题,跟帖即可。
使用OD的插件下万能断点即可中断,然后跟进算法CALL(这个哪是算法CALL你得猜一下哈)
TMD 今天人品比较好 随便输入了一个KEY 居然注册成功了 /:017
Name:Nisy
Code:ABDK-DFAE-FDSF-ZDFE-LJOI
再试一个 又成功了 /:L
Code:DADF-FEFD-FEXD-GTDS-DSFE
简单分析过程如下:
0042E034 |. 50 PUSH EAX ; 上边是取用户注册信息
0042E035 |. 68 9C165600 PUSH PDUnDel.0056169C ; 容B
0042E03A |. 8B15 9C165600 MOV EDX,DWORD PTR DS:[56169C] ; PDUnDel.005550B4
0042E040 |. FF52 0C CALL DWORD PTR DS:[EDX+C] ; PDUnDel.0046A154 //这里是关键CALL
0042E043 |. 83C4 0C ADD ESP,0C
0042E046 |. 33C9 XOR ECX,ECX
0042E048 |. 8AC8 MOV CL,AL
0042E04A |. 83F9 01 CMP ECX,1
0042E04D |. 1BC0 SBB EAX,EAX
0042E04F |. F7D8 NEG EAX
0042E051 |. 50 PUSH EAX
0042E052 |. FF4D EC DEC DWORD PTR SS:[EBP-14]
0042E055 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0042E058 |. BA 02000000 MOV EDX,2
0042E05D |. E8 F67A1100 CALL PDUnDel.00545B58
0042E062 |. FF4D EC DEC DWORD PTR SS:[EBP-14] ; |
0042E065 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] ; |
0042E068 |. BA 02000000 MOV EDX,2 ; |
0042E06D |. E8 E67A1100 CALL PDUnDel.00545B58 ; \PDUnDel.00545B58
0042E072 |. 59 POP ECX
0042E073 |. 84C9 TEST CL,CL
0042E075 |. 74 26 JE SHORT PDUnDel.0042E09D ; 注册时的跳转
0042E077 |. 6A 10 PUSH 10
0042E079 |. 68 E3515500 PUSH PDUnDel.005551E3 ; Information
0042E07E |. 68 9F515500 PUSH PDUnDel.0055519F ; Invalid registration code, please contact us at [email protected]
跟进关键CALL :
0046A154 /. 55 PUSH EBP
0046A155 |. 8BEC MOV EBP,ESP
0046A157 |. 83C4 E0 ADD ESP,-20
0046A15A |. 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
0046A15E |. 74 08 JE SHORT PDUnDel.0046A168
0046A160 |. 8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
0046A163 |. 8038 00 CMP BYTE PTR DS:[EAX],0
0046A166 |. 75 04 JNZ SHORT PDUnDel.0046A16C
0046A168 |> 33C0 XOR EAX,EAX
0046A16A |. EB 59 JMP SHORT PDUnDel.0046A1C5
0046A16C |> 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
0046A16F |. 85D2 TEST EDX,EDX
0046A171 |. 74 1B JE SHORT PDUnDel.0046A18E
0046A173 |. 837D 10 00 CMP DWORD PTR SS:[EBP+10],0
0046A177 |. 74 15 JE SHORT PDUnDel.0046A18E
0046A179 |. 6A 1F PUSH 1F ; /Arg3 = 0000001F
0046A17B |. FF75 10 PUSH DWORD PTR SS:[EBP+10] ; |Arg2
0046A17E |. 8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20] ; |
0046A181 |. 51 PUSH ECX ; |Arg1
0046A182 |. E8 01D10C00 CALL PDUnDel.00537288 ; \PDUnDel.00537288
0046A187 |. 83C4 0C ADD ESP,0C
0046A18A |. C645 FF 00 MOV BYTE PTR SS:[EBP-1],0
0046A18E |> 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
0046A191 |. 50 PUSH EAX
0046A192 |. 68 AFB05500 PUSH PDUnDel.0055B0AF
0046A197 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0046A19A |. 52 PUSH EDX
0046A19B |. 8B0A MOV ECX,DWORD PTR DS:[EDX]
0046A19D |. FF51 20 CALL DWORD PTR DS:[ECX+20] ; 这里是算法CALL了哦 ,跟进去就可以找到KEY的格式了
0046A1A0 |. 83C4 0C ADD ESP,0C
0046A1A3 |. 84C0 TEST AL,AL
0046A1A5 |. 75 04 JNZ SHORT PDUnDel.0046A1AB
0046A1A7 |. 33C0 XOR EAX,EAX
0046A1A9 |. EB 1A JMP SHORT PDUnDel.0046A1C5
进到算法CALL 大家自己分析一下算法好了 整理破文确实比较累人 O(∩_∩)O~
问题一:程序的算法是如何设计的,为何我能随意输入注册成功?
问题二:程序的KEY保存到哪里?是如何加密保存的?
|
|