一下代码是dede反编译过来的,哪个高手能解析这段代码呢?谢谢了* Reference to control Password : N.A.
|
005A7EF7   8B8314030000           mov     eax, [ebx+$0314]
005A7EFD   8B30                   mov     esi, [eax]
005A7EFF   FF5604                 call    dword ptr [esi+$04]
005A7F02   8D55E8                 lea     edx, [ebp-$18]

解决方案 »

  1.   


    下面是完整代码,是一个确定按钮点击后执行的方法,这个功能是测试连接数据库,因为界面上没有输入密码的地方,我怀疑是不是写死了,反编译这个方法后,还是看不出来,看看能不能帮解析一下哈。procedure TfrmNetSet.OKBtnClick(Sender : TObject);
    begin
    (*
    005A7E48   55                     push    ebp
    005A7E49   8BEC                   mov     ebp, esp
    005A7E4B   B904000000             mov     ecx, $00000004
    005A7E50   6A00                   push    $00
    005A7E52   6A00                   push    $00
    005A7E54   49                     dec     ecx
    005A7E55   75F9                   jnz     005A7E50
    005A7E57   51                     push    ecx
    005A7E58   53                     push    ebx
    005A7E59   56                     push    esi
    005A7E5A   8BD8                   mov     ebx, eax
    005A7E5C   33C0                   xor     eax, eax
    005A7E5E   55                     push    ebp* Possible String Reference to: '槭洛胫^[嬪]?
    |
    005A7E5F   68C17F5A00             push    $005A7FC1***** TRY
    |
    005A7E64   64FF30                 push    dword ptr fs:[eax]
    005A7E67   648920                 mov     fs:[eax], esp
    005A7E6A   8D55FC                 lea     edx, [ebp-$04]* Reference to control Label1 : TLabel
    |
    005A7E6D   8B8308030000           mov     eax, [ebx+$0308]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7E73   E858E2EAFF             call    004560D0
    005A7E78   8B45FC                 mov     eax, [ebp-$04]
    005A7E7B   50                     push    eax
    005A7E7C   8D55F8                 lea     edx, [ebp-$08]* Reference to control Panel1 : N.A.
    |
    005A7E7F   8B8304030000           mov     eax, [ebx+$0304]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7E85   E846E2EAFF             call    004560D0
    005A7E8A   8B45F8                 mov     eax, [ebp-$08]
    005A7E8D   50                     push    eax
    005A7E8E   8D55F4                 lea     edx, [ebp-$0C]* Reference to control CancelButton : N.A.
    |
    005A7E91   8B8300030000           mov     eax, [ebx+$0300]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7E97   E834E2EAFF             call    004560D0
    005A7E9C   8B55F4                 mov     edx, [ebp-$0C]
    005A7E9F   A1D0E99700             mov     eax, dword ptr [$0097E9D0]
    005A7EA4   8B00                   mov     eax, [eax]
    005A7EA6   59                     pop     ecx|
    005A7EA7   E81031FEFF             call    0058AFBC
    005A7EAC   84C0                   test    al, al
    005A7EAE   0F84DD000000           jz      005A7F91
    005A7EB4   8D55F0                 lea     edx, [ebp-$10]* Reference to control CancelButton : N.A.
    |
    005A7EB7   8B8300030000           mov     eax, [ebx+$0300]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7EBD   E80EE2EAFF             call    004560D0
    005A7EC2   8B45F0                 mov     eax, [ebp-$10]
    005A7EC5   50                     push    eax* Possible String Reference to: 'ServerName'
    |
    005A7EC6   B9D87F5A00             mov     ecx, $005A7FD8* Possible String Reference to: 'Server'
    |
    005A7ECB   BAEC7F5A00             mov     edx, $005A7FEC* Reference to control Password : N.A.
    |
    005A7ED0   8B8314030000           mov     eax, [ebx+$0314]
    005A7ED6   8B30                   mov     esi, [eax]
    005A7ED8   FF5604                 call    dword ptr [esi+$04]
    005A7EDB   8D55EC                 lea     edx, [ebp-$14]* Reference to control Panel1 : N.A.
    |
    005A7EDE   8B8304030000           mov     eax, [ebx+$0304]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7EE4   E8E7E1EAFF             call    004560D0
    005A7EE9   8B45EC                 mov     eax, [ebp-$14]
    005A7EEC   50                     push    eax* Possible String Reference to: 'DBName'
    |
    005A7EED   B9FC7F5A00             mov     ecx, $005A7FFC* Possible String Reference to: 'Server'
    |
    005A7EF2   BAEC7F5A00             mov     edx, $005A7FEC* Reference to control Password : N.A.
    |
    005A7EF7   8B8314030000           mov     eax, [ebx+$0314]
    005A7EFD   8B30                   mov     esi, [eax]
    005A7EFF   FF5604                 call    dword ptr [esi+$04]
    005A7F02   8D55E8                 lea     edx, [ebp-$18]* Reference to control Label1 : TLabel
    |
    005A7F05   8B8308030000           mov     eax, [ebx+$0308]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7F0B   E8C0E1EAFF             call    004560D0
    005A7F10   8B45E8                 mov     eax, [ebp-$18]
    005A7F13   50                     push    eax* Possible String Reference to: 'User'
    |
    005A7F14   B90C805A00             mov     ecx, $005A800C* Possible String Reference to: 'Server'
    |
    005A7F19   BAEC7F5A00             mov     edx, $005A7FEC* Reference to control Password : N.A.
    |
    005A7F1E   8B8314030000           mov     eax, [ebx+$0314]
    005A7F24   8B30                   mov     esi, [eax]
    005A7F26   FF5604                 call    dword ptr [esi+$04]
    005A7F29   6A00                   push    $00
    005A7F2B   6A00                   push    $00
    005A7F2D   6A00                   push    $00
    005A7F2F   6A00                   push    $00
    005A7F31   6A00                   push    $00* Possible String Reference to: '数据库服务器'
    |
    005A7F33   681C805A00             push    $005A801C* Possible String Reference to: '设置为'
    |
    005A7F38   6834805A00             push    $005A8034
    005A7F3D   8D55E0                 lea     edx, [ebp-$20]* Reference to control CancelButton : N.A.
    |
    005A7F40   8B8300030000           mov     eax, [ebx+$0300]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7F46   E885E1EAFF             call    004560D0
    005A7F4B   FF75E0                 push    dword ptr [ebp-$20]
    005A7F4E   6844805A00             push    $005A8044
    005A7F53   8D55DC                 lea     edx, [ebp-$24]* Reference to control Panel1 : N.A.
    |
    005A7F56   8B8304030000           mov     eax, [ebx+$0304]* Reference to: Controls.TControl.GetText(TControl):TCaption;
    |
    005A7F5C   E86FE1EAFF             call    004560D0
    005A7F61   FF75DC                 push    dword ptr [ebp-$24]
    005A7F64   8D45E4                 lea     eax, [ebp-$1C]
    005A7F67   BA04000000             mov     edx, $00000004* Reference to: System.@LStrCatN;
    |
    005A7F6C   E803CEE5FF             call    00404D74
    005A7F71   8B45E4                 mov     eax, [ebp-$1C]
    005A7F74   50                     push    eax* Possible String Reference to: '成功'
    |
    005A7F75   6850805A00             push    $005A8050
    005A7F7A   6A00                   push    $00
    005A7F7C   33C9                   xor     ecx, ecx
    005A7F7E   33D2                   xor     edx, edx* Possible String Reference to: 'db_set'
    |
    005A7F80   B860805A00             mov     eax, $005A8060|
    005A7F85   E80A9BFFFF             call    005A1A94
    005A7F8A   8BC3                   mov     eax, ebx* Reference to: Forms.TCustomForm.Close(TCustomForm);
    |
    005A7F8C   E887B0ECFF             call    00473018
    005A7F91   33C0                   xor     eax, eax
    005A7F93   5A                     pop     edx
    005A7F94   59                     pop     ecx
    005A7F95   59                     pop     ecx
    005A7F96   648910                 mov     fs:[eax], edx****** FINALLY
    |* Possible String Reference to: '^[嬪]?
    |
    005A7F99   68C87F5A00             push    $005A7FC8
    005A7F9E   8D45DC                 lea     eax, [ebp-$24]
    005A7FA1   BA02000000             mov     edx, $00000002* Reference to: System.@LStrArrayClr(void;void;Integer);
    |
    005A7FA6   E865CAE5FF             call    00404A10
    005A7FAB   8D45E4                 lea     eax, [ebp-$1C]* Reference to: System.@LStrClr(void;void);
    |
    005A7FAE   E839CAE5FF             call    004049EC
    005A7FB3   8D45E8                 lea     eax, [ebp-$18]
    005A7FB6   BA06000000             mov     edx, $00000006* Reference to: System.@LStrArrayClr(void;void;Integer);
    |
    005A7FBB   E850CAE5FF             call    00404A10
    005A7FC0   C3                     ret
    * Reference to: System.@HandleFinally;
    |
    005A7FC1   E9CAC2E5FF             jmp     00404290
    005A7FC6   EBD6                   jmp     005A7F9E****** END
    |
    005A7FC8   5E                     pop     esi
    005A7FC9   5B                     pop     ebx
    005A7FCA   8BE5                   mov     esp, ebp
    005A7FCC   5D                     pop     ebp
    005A7FCD   C3                     ret*)
    end;procedure TfrmNetSet.FormClose(Sender : TObject);
    begin
    (** Reference to control Password : N.A.
    |
    005A81CC   8B8014030000           mov     eax, [eax+$0314]* Reference to: System.TObject.Free(TObject);
    |
    005A81D2   E825B9E5FF             call    00403AFC
    005A81D7   C3                     ret*)
    end;
      

  2.   

    就这段代码来说,并没有看到使用硬编码的密码或者读取密码的部分,还是要看
    005A7EA7   E81031FEFF             call    0058AFBC
    的内部,这个函数应该是真正测试连接的代码。
    其余部分只是读取界面上几个edit的值,然后调用这个连接函数,如果成功就保存几个参数,显示一个信息,大致如此:
    procedure TfrmNetSet.OKBtnClick(Sender : TObject);
    var
      ServerName, DBName, User: string;
    begin
      try
        User := Edit3.Text;
        DBName := Edit2.Text;
        ServerName := Edit1.Text;
        if not xxx.Connect(ServerName, DBName, User) then
          exit;
        func1('Server', 'ServerName', Edit1.Text);
        func1('Server', 'DBName', Edit2.Text);
        func1('Server', 'User', Edit3.Text);
        ShowMessage('数据库服务器设置为...成功');
        func2('db_set');
        Close;
      finally
        // ...
      end;
    end;