首页
社区
课程
招聘
firstRose请进来看一下这个怎么逆?
发表于: 2004-11-17 15:23 4178

firstRose请进来看一下这个怎么逆?

2004-11-17 15:23
4178
这是某个软件的formcreate,请firstrose帮忙看一下划线的地方应该怎么逆?

unit fmMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls
type
  TfMain=class(TForm)
    MainMenu: TMainMenu;
    File1: TMenuItem;
    UpdateNow: TMenuItem;
    ExitProgram: TMenuItem;
    Help1: TMenuItem;
    TextHelp: TMenuItem;
    About: TMenuItem;
    N1: TMenuItem;
    OpenCurr: TMenuItem;
    ToolBar1: TToolBar;
    Window1: TMenuItem;
    CascadeWin: TMenuItem;
    TileWin: TMenuItem;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    Bar: TStatusBarPro;
    AppEvents: TAppEvents;
    Popup: TPopupMenu;
    SC1: TMenuItem;
    Help2: TMenuItem;
    N2: TMenuItem;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    N3: TMenuItem;
    Readme1: TMenuItem;
    OFFS_0374: N.A.;
    OFFS_0375: N.A.;
    OFFS_0378: N.A.;
    OFFS_0370: N.A.;
    procedure FormCreate(Sender : TObject);
    procedure CascadeWinClick(Sender : TObject);
    procedure TileWinClick(Sender : TObject);
    procedure FormClose(Sender : TObject);
    procedure AboutClick(Sender : TObject);
    procedure AppEventsMessage(Sender : TObject);
    procedure ExitProgramClick(Sender : TObject);
    procedure SC1Click(Sender : TObject);
    procedure TextHelpClick(Sender : TObject);
    procedure FormActivate(Sender : TObject);
    procedure HelpClick(Sender : TObject);
    procedure UpdateNowClick(Sender : TObject);
    procedure Readme1Click(Sender : TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end ;

var
  fMain: TfMain;

{This file is generated by DeDe Ver 3.50.02 Copyright (c) 1999-2002 DaFixer}

implementation

{$R *.DFM}

procedure TfMain.FormCreate(Sender : TObject);
begin
(*
0051B0AC   53                     push    ebx
0051B0AD   8BD8                   mov     ebx, eax

* Reference to field TfMain.OFFS_0374 : Byte
|
0051B0AF   C6837403000000         mov     byte ptr [ebx+$0374], $00

* Reference to field TfMain.OFFS_0375 : Byte
|
0051B0B6   C6837503000001         mov     byte ptr [ebx+$0375], $01

* Reference to field TfMain.OFFS_0378 : String
|
0051B0BD   8D8378030000           lea     eax, [ebx+$0378]

* Reference to: System.@LStrClr(void;void);
|
0051B0C3   E83497EEFF             call    004047FC

-------------------------------------------------------------------------------------------------
* Reference to field TfMain.TileMode : TTileMode
|
0051B0C8   C6833202000001         mov     byte ptr [ebx+$0232], $01

* Reference to TScreen instance
|
0051B0CF   A1B8EA5100             mov     eax, dword ptr [$0051EAB8]
0051B0D4   8B00                   mov     eax, [eax]

* Reference to: Forms.TScreen.GetWidth(TScreen):Integer;
|
0051B0D6   E835CAF5FF             call    00477B10
-------------------------------------------------------------------------------------------------
0051B0DB   8BD0                   mov     edx, eax
0051B0DD   83EA28                 sub     edx, +$28
0051B0E0   8BC3                   mov     eax, ebx

* Reference to: Controls.TControl.SetWidth(TControl;Integer);
|
0051B0E2   E875E4F3FF             call    0045955C

* Reference to TScreen instance
|
0051B0E7   A1B8EA5100             mov     eax, dword ptr [$0051EAB8]
0051B0EC   8B00                   mov     eax, [eax]

* Reference to: Forms.TScreen.GetHeight(TScreen):Integer;
|
0051B0EE   E811CAF5FF             call    00477B04
----------------------------------------------------------------------
0051B0F3   8BD0                   mov     edx, eax
0051B0F5   83EA28                 sub     edx, +$28
0051B0F8   8BC3                   mov     eax, ebx

* Reference to: Controls.TControl.SetHeight(TControl;Integer);
|
0051B0FA   E881E4F3FF             call    00459580
----------------------------------------------------------------------
0051B0FF   8BC3                   mov     eax, ebx

|
0051B101   E8C6000000             call    0051B1CC
0051B106   B201                   mov     dl, $01

* Reference to class TStringList
|
0051B108   A17CBF4100             mov     eax, dword ptr [$0041BF7C]

* Reference to: System.TObject.Create(TObject;Boolean);
|
0051B10D   E8A688EEFF             call    004039B8

* Reference to field TfMain.OFFS_0370 : TStringList
|
0051B112   898370030000           mov     [ebx+$0370], eax
0051B118   8BC3                   mov     eax, ebx

|
0051B11A   E8B5010000             call    0051B2D4
0051B11F   5B                     pop     ebx
0051B120   C3                     ret

*)
end;
----------------------------------------------------------------------

procedure TfMain.CascadeWinClick(Sender : TObject);
begin
(*

* Reference to: Forms.TForm.Cascade(TForm);
|           or: Forms.TForm.ArrangeIcons(TForm);
|           or: Forms.TForm.Next(TForm);
|
0051B1A8   E8FBC1F5FF             call    004773A8
0051B1AD   C3                     ret

*)
end;

procedure TfMain.TileWinClick(Sender : TObject);
begin
(*

* Reference to : TApplication._PROC_00477370()
|
0051B1B0   E8BBC1F5FF             call    00477370
0051B1B5   C3                     ret

*)
end;

procedure TfMain.FormClose(Sender : TObject);
begin
(*
0051B150   53                     push    ebx
0051B151   56                     push    esi
0051B152   8BF1                   mov     esi, ecx
0051B154   8BD8                   mov     ebx, eax

* Reference to field TfMain.OFFS_0374 : Byte
|
0051B156   80BB7403000000         cmp     byte ptr [ebx+$0374], $00
0051B15D   751D                   jnz     0051B17C
0051B15F   8BC3                   mov     eax, ebx

* Reference to: Forms.TCustomForm.GetActiveMDIChild(TCustomForm):TForm;
|
0051B161   E8FE8DF5FF             call    00473F64
0051B166   85C0                   test    eax, eax
0051B168   7412                   jz      0051B17C
0051B16A   8BC3                   mov     eax, ebx

* Reference to: Forms.TCustomForm.GetActiveMDIChild(TCustomForm):TForm;
|
0051B16C   E8F38DF5FF             call    00473F64

* Reference to: Forms.TCustomForm.Close(TCustomForm);
|
0051B171   E80AB7F5FF             call    00476880
0051B176   C60600                 mov     byte ptr [esi], $00
0051B179   5E                     pop     esi
0051B17A   5B                     pop     ebx
0051B17B   C3                     ret

0051B17C   8B8370030000           mov     eax, [ebx+$0370]

* Reference to: System.TObject.Free(TObject);
|
0051B182   E86188EEFF             call    004039E8
0051B187   5E                     pop     esi
0051B188   5B                     pop     ebx
0051B189   C3                     ret

*)
end;

procedure TfMain.AboutClick(Sender : TObject);
begin
(*

|
0051B1C4   E8EF37FEFF             call    004FE9B8
0051B1C9   C3                     ret

*)
end;

procedure TfMain.AppEventsMessage(Sender : TObject);
begin
(*
0051AEC8   55                     push    ebp
0051AEC9   8BEC                   mov     ebp, esp
0051AECB   6A00                   push    $00
0051AECD   53                     push    ebx
0051AECE   56                     push    esi
0051AECF   8BDA                   mov     ebx, edx
0051AED1   8BF0                   mov     esi, eax
0051AED3   33C0                   xor     eax, eax
0051AED5   55                     push    ebp

* Possible String Reference to: '榕??疝[Y]?
|
0051AED6   68B2AF5100             push    $0051AFB2

***** TRY
|
0051AEDB   64FF30                 push    dword ptr fs:[eax]
0051AEDE   648920                 mov     fs:[eax], esp
0051AEE1   817B0464040000         cmp     dword ptr [ebx+$04], $00000464
0051AEE8   0F85AE000000           jnz     0051AF9C
0051AEEE   8B4308                 mov     eax, [ebx+$08]
0051AEF1   48                     dec     eax
0051AEF2   7413                   jz      0051AF07
0051AEF4   48                     dec     eax
0051AEF5   0F8488000000           jz      0051AF83
0051AEFB   48                     dec     eax
0051AEFC   0F8493000000           jz      0051AF95
0051AF02   E995000000             jmp     0051AF9C
0051AF07   C60101                 mov     byte ptr [ecx], $01

* Reference to control TfMain.Bar : TStatusBarPro
|
0051AF0A   8B8644030000           mov     eax, [esi+$0344]

* Reference to field TStatusBarPro.OFFS_0208
|
0051AF10   8B8008020000           mov     eax, [eax+$0208]
0051AF16   BA01000000             mov     edx, $00000001

* Reference to: ActnMan.TActionListCollection.GetListItem(TActionListCollection;Integer):TActionListItem;
|           or: ActnMan.TActionClientsCollection.GetActionClient(TActionClientsCollection;Integer):TActionClient;
|           or: ActnMan.TActionBars.GetActionBar(TActionBars;Integer):TActionBarItem;
|           or: ActnMan.TActionClients.GetActionClient(TActionClients;Integer):TActionClientItem;
|           or: ActnMenus.TMenuList.GetMenu(TMenuList;Integer):TCustomActionMenuBar;
|           or: ADODB.TParameters.GetItem(TParameters;Integer):TParameter;
|
0051AF1B   E8140CF7FF             call    0048BB34
0051AF20   50                     push    eax
0051AF21   8D45FC                 lea     eax, [ebp-$04]
0051AF24   8B530C                 mov     edx, [ebx+$0C]

* Reference to: System.@LStrFromPChar(String;String;PAnsiChar);
|           or: System.@WStrFromPChar(WideString;WideString;PAnsiChar);
|
0051AF27   E8C89AEEFF             call    004049F4
0051AF2C   8B55FC                 mov     edx, [ebp-$04]
0051AF2F   58                     pop     eax

* Reference to: ComCtrls.TStatusPanel.SetText(TStatusPanel;AnsiString);
|           or: ComCtrls.THeaderSection.SetText(THeaderSection;AnsiString);
|
0051AF30   E8BB0AF7FF             call    0048B9F0
0051AF35   8BC6                   mov     eax, esi

* Reference to: Forms.TCustomForm.GetMDIChildCount(TCustomForm):Integer;
|
0051AF37   E85C90F5FF             call    00473F98
0051AF3C   48                     dec     eax
0051AF3D   7E22                   jle     0051AF61

* Reference to control TfMain.Bar : TStatusBarPro
|
0051AF3F   8B8644030000           mov     eax, [esi+$0344]

* Reference to field TStatusBarPro.OFFS_0208
|
0051AF45   8B8008020000           mov     eax, [eax+$0208]
0051AF4B   BA02000000             mov     edx, $00000002

* Reference to: ActnMan.TActionListCollection.GetListItem(TActionListCollection;Integer):TActionListItem;
|           or: ActnMan.TActionClientsCollection.GetActionClient(TActionClientsCollection;Integer):TActionClient;
|           or: ActnMan.TActionBars.GetActionBar(TActionBars;Integer):TActionBarItem;
|           or: ActnMan.TActionClients.GetActionClient(TActionClients;Integer):TActionClientItem;
|           or: ActnMenus.TMenuList.GetMenu(TMenuList;Integer):TCustomActionMenuBar;
|           or: ADODB.TParameters.GetItem(TParameters;Integer):TParameter;
|
0051AF50   E8DF0BF7FF             call    0048BB34

* Possible String Reference to: '  CTRL+TAB - select window  F1 - us
|                                er guide  F2/Right click - select c
|                                urrency  F3 - tile   F4 - cascade  
|                                F10 - main menu'
|
0051AF55   BAC8AF5100             mov     edx, $0051AFC8

* Reference to: ComCtrls.TStatusPanel.SetText(TStatusPanel;AnsiString);
|           or: ComCtrls.THeaderSection.SetText(THeaderSection;AnsiString);
|
0051AF5A   E8910AF7FF             call    0048B9F0
0051AF5F   EB3B                   jmp     0051AF9C

* Reference to control TfMain.Bar : TStatusBarPro
|
0051AF61   8B8644030000           mov     eax, [esi+$0344]

* Reference to field TStatusBarPro.OFFS_0208
|
0051AF67   8B8008020000           mov     eax, [eax+$0208]
0051AF6D   BA02000000             mov     edx, $00000002

* Reference to: ActnMan.TActionListCollection.GetListItem(TActionListCollection;Integer):TActionListItem;
|           or: ActnMan.TActionClientsCollection.GetActionClient(TActionClientsCollection;Integer):TActionClient;
|           or: ActnMan.TActionBars.GetActionBar(TActionBars;Integer):TActionBarItem;
|           or: ActnMan.TActionClients.GetActionClient(TActionClients;Integer):TActionClientItem;
|           or: ActnMenus.TMenuList.GetMenu(TMenuList;Integer):TCustomActionMenuBar;
|           or: ADODB.TParameters.GetItem(TParameters;Integer):TParameter;
|
0051AF72   E8BD0BF7FF             call    0048BB34

* Possible String Reference to: '  F1 - user guide  F2/Right click -
|                                 select currency  F3 - tile   F4 -
|                                cascade  F10 - main menu'
|
0051AF77   BA4CB05100             mov     edx, $0051B04C

* Reference to: ComCtrls.TStatusPanel.SetText(TStatusPanel;AnsiString);
|           or: ComCtrls.THeaderSection.SetText(THeaderSection;AnsiString);
|
0051AF7C   E86F0AF7FF             call    0048B9F0
0051AF81   EB19                   jmp     0051AF9C
0051AF83   C60101                 mov     byte ptr [ecx], $01
0051AF86   837B0C01               cmp     dword ptr [ebx+$0C], +$01
0051AF8A   7F10                   jnle    0051AF9C
0051AF8C   8BC6                   mov     eax, esi

|
0051AF8E   E839020000             call    0051B1CC
0051AF93   EB07                   jmp     0051AF9C
0051AF95   8BC6                   mov     eax, esi

|
0051AF97   E838030000             call    0051B2D4
0051AF9C   33C0                   xor     eax, eax
0051AF9E   5A                     pop     edx
0051AF9F   59                     pop     ecx
0051AFA0   59                     pop     ecx
0051AFA1   648910                 mov     fs:[eax], edx

****** FINALLY
|

* Possible String Reference to: '^[Y]?
|
0051AFA4   68B9AF5100             push    $0051AFB9
0051AFA9   8D45FC                 lea     eax, [ebp-$04]

* Reference to: System.@LStrClr(void;void);
|
0051AFAC   E84B98EEFF             call    004047FC
0051AFB1   C3                     ret

* Reference to: System.@HandleFinally;
|
0051AFB2   E9C591EEFF             jmp     0040417C
0051AFB7   EBF0                   jmp     0051AFA9

****** END
|
0051AFB9   5E                     pop     esi
0051AFBA   5B                     pop     ebx
0051AFBB   59                     pop     ecx
0051AFBC   5D                     pop     ebp
0051AFBD   C3                     ret

*)
end;

procedure TfMain.ExitProgramClick(Sender : TObject);
begin
(*

* Reference to field TfMain.OFFS_0374 : Byte
|
0051B24C   C6807403000001         mov     byte ptr [eax+$0374], $01

* Reference to: Forms.TCustomForm.Close(TCustomForm);
|
0051B253   E828B6F5FF             call    00476880
0051B258   C3                     ret

*)
end;

procedure TfMain.SC1Click(Sender : TObject);
begin
(*
0051B18C   53                     push    ebx

* Reference to field TfMain.Top : Integer
|
0051B18D   8B4844                 mov     ecx, [eax+$44]
0051B190   83C120                 add     ecx, +$20

* Reference to field TfMain.Left : Integer
|
0051B193   8B5040                 mov     edx, [eax+$40]
0051B196   83C210                 add     edx, +$10

* Reference to control TfMain.Popup : TPopupMenu
|
0051B199   8B804C030000           mov     eax, [eax+$034C]
0051B19F   8B18                   mov     ebx, [eax]

* Reference to method TPopupMenu.Popup(Integer,Integer)
|
0051B1A1   FF5340                 call    dword ptr [ebx+$40]
0051B1A4   5B                     pop     ebx
0051B1A5   C3                     ret

*)
end;

procedure TfMain.TextHelpClick(Sender : TObject);
begin
(*

|
0051B25C   E8EB80FCFF             call    004E334C
0051B261   84C0                   test    al, al
0051B263   740B                   jz      0051B270

* Possible String Reference to: 'fxguide.hlp'
|
0051B265   B880B25100             mov     eax, $0051B280

|
0051B26A   E8F585FCFF             call    004E3864
0051B26F   C3                     ret

|
0051B270   E8AF89FCFF             call    004E3C24
0051B275   C3                     ret

*)
end;

procedure TfMain.FormActivate(Sender : TObject);
begin
(*
0051B124   53                     push    ebx
0051B125   8BD8                   mov     ebx, eax

|
0051B127   E82082FCFF             call    004E334C
0051B12C   8BD0                   mov     edx, eax

* Reference to control TfMain.UpdateNow : TMenuItem
|
0051B12E   8B8300030000           mov     eax, [ebx+$0300]

* Reference to: Menus.TMenuItem.SetEnabled(TMenuItem;Boolean);
|
0051B134   E8E30FF5FF             call    0046C11C

* Reference to field TfMain.OFFS_0375 : Byte
|
0051B139   80BB7503000000         cmp     byte ptr [ebx+$0375], $00
0051B140   7405                   jz      0051B147

|
0051B142   E87138FEFF             call    004FE9B8

* Reference to field TfMain.OFFS_0375 : Byte
|
0051B147   C6837503000000         mov     byte ptr [ebx+$0375], $00
0051B14E   5B                     pop     ebx
0051B14F   C3                     ret

*)
end;

procedure TfMain.HelpClick(Sender : TObject);
begin
(*

* Possible String Reference to: 'fxhelp.hlp'
|
0051B28C   B8A0B25100             mov     eax, $0051B2A0

|
0051B291   E8CE85FCFF             call    004E3864
0051B296   C3                     ret

*)
end;

procedure TfMain.UpdateNowClick(Sender : TObject);
begin
(*

|
0051B2CC   E8BBE8FFFF             call    00519B8C
0051B2D1   C3                     ret

*)
end;

procedure TfMain.Readme1Click(Sender : TObject);
begin
(*

* Possible String Reference to: 'readme.txt'
|
0051B2AC   B8C0B25100             mov     eax, $0051B2C0

|
0051B2B1   E8AE85FCFF             call    004E3864
0051B2B6   C3                     ret

*)
end;

end.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
2
Delphi的VCL我还没有碰过,只是做了个SDK的分析。

0051B0AF和0051B0B6应该没什么说的,就是变量初值。

0051B0C3处是将String清空。具体是哪个Str,从上面的ref看,好象是
TfMain的class里一个Str

0051B0E2处应该是xxControl.Width:=Screen.Width-$28;
0051B0FF是xxControl.Height:=Screen.Height-$28;
从逻辑上看这个xxControl可能就是TfMain。目的是按照当前分辨率调整窗口大小。

从0051B108到0051B118其实就是
var
  SL:TStringList;
Begin
  SL:=TStringList.Create();
  
其他的,缺少相关信息。

建议你自己写个delphi程序,用dede反,然后对照一下。另外,最好先学学SDK。有帮助的。

就到这里吧,vcl的逆向我打算最近看看,但不是现在。抱歉。
2004-11-17 15:56
0
雪    币: 218
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
感谢ing............................
另外,请问学sdk应该从哪里开始?看些什么书?
vcl的逆向比sdk难吗?
2004-11-17 17:33
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
4
最初由 nnscccn 发布
感谢ing............................
另外,请问学sdk应该从哪里开始?看些什么书?
vcl的逆向比sdk难吗?


1、
《Windows 程序设计》
《SDK路报》
……

其实我自己都在学。
2、不一定。但是SDK公认是最简单的
2004-11-17 18:34
0
雪    币: 218
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
最初由 firstrose 发布
Delphi的VCL我还没有碰过,只是做了个SDK的分析。

0051B0AF和0051B0B6应该没什么说的,就是变量初值。

0051B0C3处是将String清空。具体是哪个Str,从上面的ref看,好象是
........


请教:
1、这两个变量初值是做什么用的?这一段可不可以逆成:
var
offs_0374:byte;
offs_0375:byte;
offs_0378:string;
begin
offs_0374:=$00;
offs_0375:=$01;
offs_0378:='';
....................................................
2、0051B0C3处的string,Tfmain的class里一个str是什么意思?
2004-11-18 08:41
0
游客
登录 | 注册 方可回帖
返回
//