Nisy 发表于 2010-4-18 10:59:53

PD-UnDelete 2.0 简单分析(标志位爆破比较容易)

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:      ;PDUnDel.005550B4
0042E040|.FF52 0C       CALL DWORD PTR DS:            ;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:
0042E055|.8D45 F4       LEA EAX,DWORD PTR SS:
0042E058|.BA 02000000   MOV EDX,2
0042E05D|.E8 F67A1100   CALL PDUnDel.00545B58
0042E062|.FF4D EC       DEC DWORD PTR SS:            ; |
0042E065|.8D45 F8       LEA EAX,DWORD PTR SS:         ; |
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:,0
0046A15E|.74 08         JE SHORT PDUnDel.0046A168
0046A160|.8B45 10       MOV EAX,DWORD PTR SS:
0046A163|.8038 00       CMP BYTE PTR DS:,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:
0046A16F|.85D2          TEST EDX,EDX
0046A171|.74 1B         JE SHORT PDUnDel.0046A18E
0046A173|.837D 10 00    CMP DWORD PTR SS:,0
0046A177|.74 15         JE SHORT PDUnDel.0046A18E
0046A179|.6A 1F         PUSH 1F                              ; /Arg3 = 0000001F
0046A17B|.FF75 10       PUSH DWORD PTR SS:         ; |Arg2
0046A17E|.8D4D E0       LEA ECX,DWORD PTR SS:      ; |
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:,0
0046A18E|>8D45 E0       LEA EAX,DWORD PTR SS:
0046A191|.50            PUSH EAX
0046A192|.68 AFB05500   PUSH PDUnDel.0055B0AF
0046A197|.8B55 08       MOV EDX,DWORD PTR SS:
0046A19A|.52            PUSH EDX
0046A19B|.8B0A          MOV ECX,DWORD PTR DS:
0046A19D|.FF51 20       CALL DWORD PTR DS:         ;这里是算法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保存到哪里?是如何加密保存的?

**** Hidden Message *****

月之精灵 发表于 2010-4-18 11:40:34

高亮了,分就不给你加了哈/:017

lacoucou 发表于 2010-4-18 12:08:39

会不会是Demo版的啊,要不咋会随便输就会成功?

MOV 发表于 2010-4-18 15:36:56

N大的文章要仔细品尝

老万 发表于 2010-4-18 19:38:16

学习一下N老大的文章

破解爱好者 发表于 2010-4-23 12:50:58

随意注册码就能成功?不会吧/:L

月之精灵 发表于 2010-4-23 13:20:47

原帖由 破解爱好者 于 2010-4-23 12:50 发表 https://www.chinapyg.com/images/common/back.gif
随意注册码就能成功?不会吧/:L
你自己跟一下就知道是怎么回事了/:018

pao 发表于 2010-4-25 20:31:23

支持一下校长!

GGLHY 发表于 2010-4-29 10:10:08

哈哈,看看是咋回事
页: [1]
查看完整版本: PD-UnDelete 2.0 简单分析(标志位爆破比较容易)