• 标 题:目标--dephi(1), SoftSol Ativa DUN Meter 2.3
  • 作 者:小楼
  • 时 间:2000-12-3 12:16:17
  • 链 接:http://bbs.pediy.com

目标--dephi
              SoftSol Ativa DUN Meter 2.3

    类似于VB,dephi也是一种面向对象的编程语言。同时因为它的一些特性,所以关于dephi编译的程序破解也有一些可以取巧之处。关于dephi的逆向工程国外已经有人专文进行了探讨,而在国内还鲜有人提及。在此仅就使用DEDE2.42--一个dephi反编译工具进行介绍。
    目标:SoftSol Ativa DUN Meter 2.3 一个网络下载数据测量工具。

    首先用DEDE2.42反编译ativa.exe。
    1、在Form面板中找到一个ClassName叫TfmKeyRegister,单击后就可以见到“注册”窗体中各个对象的属性及相互关系。
......
object btnOK: TButton    <--注册按钮
    Left = 230            <--
    Top = 292              |
    Width = 75              |按钮的大小尺寸
    Height = 23          <--
    Caption = '&OK'      <--按钮的名字
    TabOrder = 0         
    OnClick = btnOKClick  <--按下按钮后击发的事件
  end
......
object editReg1: TEdit    <--
    Left = 80              |
    Top = 237              |
    Width = 90              |注册码填入框1
    Height = 21            |
    MaxLength = 6          |
    TabOrder = 2            |
  end                    <--
  object editReg2: TEdit  <--
    Left = 188              |
    Top = 237              |
    Width = 90              |注册码填入框2
    Height = 21            |
    MaxLength = 6          |
    TabOrder = 3            |
  end                    <--
  object editReg3: TEdit  <--
    Left = 297              |
    Top = 237              |
    Width = 90              |注册码填入框3
    Height = 21            |
    MaxLength = 6          |
    TabOrder = 4            |
  end                    <--


  2、在Procedures面板中可以看到一个UnitName,名为KeyRegister,双击名为btnOKClick的事件,
......
* Reference to control TfmKeyRegister.editReg1 : TEdit
|
004835C6  8B86E8020000          mov    eax, [esi+$02E8]

* Reference to: Controls.TControl.GetText()  <--取注册框1的内容
|
004835CC  E8178FFBFF            call    0043C4E8
004835D1  8B45FC                mov    eax, [ebp-$04]

* Possible String Reference to: '560616'
|
004835D4  BA00374800            mov    edx, $00483700

* Reference to: System..LStrCmp()
|
004835D9  E8D208F8FF            call    00403EB0 <-- =560616 ?
004835DE  7402                  jz      004835E2
004835E0  33DB                  xor    ebx, ebx
004835E2  8D55F8                lea    edx, [ebp-$08]

* Reference to control TfmKeyRegister.editReg2 : TEdit
|
004835E5  8B86EC020000          mov    eax, [esi+$02EC]

* Reference to: Controls.TControl.GetText()  <--取注册框2的内容
|
004835EB  E8F88EFBFF            call    0043C4E8
004835F0  8B45F8                mov    eax, [ebp-$08]

* Possible String Reference to: '201839'
|
004835F3  BA10374800            mov    edx, $00483710

* Reference to: System..LStrCmp()
|
004835F8  E8B308F8FF            call    00403EB0
004835FD  7402                  jz      00483601 <-- = 201839 ?
004835FF  33DB                  xor    ebx, ebx
00483601  8D55F4                lea    edx, [ebp-$0C]

* Reference to control TfmKeyRegister.editReg3 : TEdit
|
00483604  8B86F0020000          mov    eax, [esi+$02F0]

* Reference to: Controls.TControl.GetText()  <--取注册框3的内容
|
0048360A  E8D98EFBFF            call    0043C4E8
0048360F  8B45F4                mov    eax, [ebp-$0C]

* Reference to: System..DynArrayLength()
|          or: System..LStrLen()            <--得到注册框3字窜长度
|
00483612  E88907F8FF            call    00403DA0
00483617  83F806                cmp    eax, +$06 
0048361A  7D02                  jnl    0048361E  >=6, OK!
0048361C  33DB                  xor    ebx, ebx
0048361E  84DB                  test    bl, bl
00483620  7530                  jnz    00483652
00483622  6A00                  push    $00
00483624  668B0D18374800        mov    cx, word ptr [$483718]
0048362B  B201                  mov    dl, $01

* Possible String Reference to: 'The Code you have entered is invali
|                                d.  Please try again.'
|
0048362D  B824374800            mov    eax, $00483724
......
00483652  8D55F0                lea    edx, [ebp-$10]
......
* Possible String Reference to: 'Congratulations and thankyou.  You
|                                have successfully registered Ativa
|                                DUN Meter.'
|
004836B6  B868374800            mov    eax, $00483768

END