Cronos
My Solution
Fri Dec 18 12:56:16 1998


My Solution to Task 3
=====================

First Observations:
OK. The program has been written in Delphi, naff language. So all strings are in Pascal format, and it's a navigational mess. I hate Delphi disassemblies, but here goes. First place to check are the resource entries, and in particular we find this one:

;-----------------------------------------------------------------------
;Segment : 1000h Offset : 483ecch Size : 3a0h
;Resource Data Unformatted Resource Data TFORM7
;-----------------------------------------------------------------------
1000:00483ecc 54 db 54 ;'T'
1000:00483ecc 54 db 54 ;'T'
1000:00483ecd 50 db 50 ;'P'
1000:00483ece 46 db 46 ;'F'
1000:00483ecf 30 db 30 ;'0'
s_TForm7:
1000:00483ed0 0654466f726d37 ds "TForm7"
s_Form7:
1000:00483ed7 05466f726d37 ds "Form7"
s_Left:
1000:00483edd 044c656674 ds "Left"
1000:00483ee2 03 db 03
1000:00483ee3 61 db 61 ;'a'
1000:00483ee4 01 db 01
s_Top:
1000:00483ee5 03546f70 ds "Top"
1000:00483ee9 03 db 03
1000:00483eea 1c db 1c
1000:00483eeb 01 db 01
s_BorderStyle:
1000:00483eec 0b426f726465725374.. ds "BorderStyle"
1000:00483ef8 07 db 07
s_bsToolWindow:
1000:00483ef9 0c6273546f6f6c5769.. ds "bsToolWindow"
s_Caption:
1000:00483f06 0743617074696f6e ds "Caption"
1000:00483f0e 06 db 06
s_Register:
1000:00483f0f 085265676973746572 ds "Register"
s_ClientHeight:
1000:00483f18 0c436c69656e744865.. ds "ClientHeight"
1000:00483f25 03 db 03
1000:00483f26 87 db 87
1000:00483f27 00 db 00
s_ClientWidth:
1000:00483f28 0b436c69656e745769.. ds "ClientWidth"
1000:00483f34 03 db 03
1000:00483f35 ec db ec
1000:00483f36 00 db 00
s_Font_Charset:
1000:00483f37 0c466f6e742e436861.. ds "Font.Charset"
1000:00483f44 07 db 07
s_DEFAULT_CHARSET:
1000:00483f45 0f44454641554c545f.. ds "DEFAULT_CHARSET"
s_Font_Color:
1000:00483f55 0a466f6e742e436f6c.. ds "Font.Color"
1000:00483f60 07 db 07
s_clWindowText:
1000:00483f61 0c636c57696e646f77.. ds "clWindowText"
s_Font_Height:
1000:00483f6e 0b466f6e742e486569.. ds "Font.Height"
1000:00483f7a 02 db 02
1000:00483f7b f5 db f5
s_Font_Name:
1000:00483f7c 09466f6e742e4e616d65 ds "Font.Name"
1000:00483f86 06 db 06
s_MS_Sans_Serif:
1000:00483f87 0d4d532053616e7320.. ds "MS Sans Serif"
s_Font_Style:
1000:00483f95 0a466f6e742e537479.. ds "Font.Style"
1000:00483fa0 0b db 0b
1000:00483fa1 00 db 00
s_Position:
1000:00483fa2 08506f736974696f6e ds "Position"
1000:00483fab 07 db 07
s_poScreenCenter:
1000:00483fac 0e706f53637265656e.. ds "poScreenCenter"
s_PixelsPerInch:
1000:00483fbb 0d506978656c735065.. ds "PixelsPerInch"
1000:00483fc9 02 db 02
1000:00483fca 60 db 60 ;'`'
s_TextHeight:
1000:00483fcb 0a5465787448656967.. ds "TextHeight"
1000:00483fd6 02 db 02
1000:00483fd7 0d db 0d
1000:00483fd8 00 db 00
s_TButton:
1000:00483fd9 0754427574746f6e ds "TButton"
s_Button1:
1000:00483fe1 07427574746f6e31 ds "Button1"
s_Left:
1000:00483fe9 044c656674 ds "Left"
1000:00483fee 02 db 02
1000:00483fef 45 db 45 ;'E'
s_Top:
1000:00483ff0 03546f70 ds "Top"
1000:00483ff4 02 db 02
1000:00483ff5 6d db 6d ;'m'
s_Width:
1000:00483ff6 055769647468 ds "Width"
1000:00483ffc 02 db 02
1000:00483ffd 50 db 50 ;'P'
s_Height:
1000:00483ffe 06486569676874 ds "Height"
1000:00484005 02 db 02
1000:00484006 19 db 19
s_Caption:
1000:00484007 0743617074696f6e ds "Caption"
1000:0048400f 06 db 06
s__Register:
1000:00484010 09265265676973746572 ds "&Register"
s_Enabled:
1000:0048401a 07456e61626c6564 ds "Enabled"
1000:00484022 08 db 08
s_TabOrder:
1000:00484023 085461624f72646572 ds "TabOrder"
1000:0048402c 02 db 02
1000:0048402d 00 db 00
s_OnClick:
1000:0048402e 074f6e436c69636b ds "OnClick"
1000:00484036 07 db 07
s_Button1Click:
1000:00484037 0c427574746f6e3143.. ds "Button1Click"
1000:00484044 00 db 00
1000:00484045 00 db 00
s_TButton:
1000:00484046 0754427574746f6e ds "TButton"
s_Button2:
1000:0048404e 07427574746f6e32 ds "Button2"
s_Left:
1000:00484056 044c656674 ds "Left"
1000:0048405b 03 db 03
1000:0048405c 99 db 99
1000:0048405d 00 db 00
s_Top:
1000:0048405e 03546f70 ds "Top"
1000:00484062 02 db 02
1000:00484063 6d db 6d ;'m'
s_Width:
1000:00484064 055769647468 ds "Width"
1000:0048406a 02 db 02
1000:0048406b 50 db 50 ;'P'
s_Height:
1000:0048406c 06486569676874 ds "Height"
1000:00484073 02 db 02
1000:00484074 19 db 19
s_Cancel:
1000:00484075 0643616e63656c ds "Cancel"
1000:0048407c 09 db 09
s_Caption:
1000:0048407d 0743617074696f6e ds "Caption"
1000:00484085 06 db 06
s_Cancel:
1000:00484086 0643616e63656c ds "Cancel"
s_TabOrder:
1000:0048408d 085461624f72646572 ds "TabOrder"
1000:00484096 02 db 02
1000:00484097 01 db 01
s_OnClick:
1000:00484098 074f6e436c69636b ds "OnClick"
1000:004840a0 07 db 07
s_Button2Click:
1000:004840a1 0c427574746f6e3243.. ds "Button2Click"
1000:004840ae 00 db 00
1000:004840af 00 db 00
s_TPanel:
1000:004840b0 065450616e656c ds "TPanel"
s_Panel1:
1000:004840b7 0650616e656c31 ds "Panel1"
s_Left:
1000:004840be 044c656674 ds "Left"
1000:004840c3 02 db 02
1000:004840c4 00 db 00
s_Top:
1000:004840c5 03546f70 ds "Top"
1000:004840c9 02 db 02
1000:004840ca 00 db 00
s_Width:
1000:004840cb 055769647468 ds "Width"
1000:004840d1 03 db 03
1000:004840d2 ec db ec
1000:004840d3 00 db 00
s_Height:
1000:004840d4 06486569676874 ds "Height"
1000:004840db 02 db 02
1000:004840dc 69 db 69 ;'i'
s_Align:
1000:004840dd 05416c69676e ds "Align"
1000:004840e3 07 db 07
s_alTop:
1000:004840e4 05616c546f70 ds "alTop"
s_TabOrder:
1000:004840ea 085461624f72646572 ds "TabOrder"
1000:004840f3 02 db 02
1000:004840f4 02 db 02
1000:004840f5 00 db 00
s_TLabel:
1000:004840f6 06544c6162656c ds "TLabel"
s_Label1:
1000:004840fd 064c6162656c31 ds "Label1"
s_Left:
1000:00484104 044c656674 ds "Left"
1000:00484109 02 db 02
1000:0048410a 1d db 1d
s_Top:
1000:0048410b 03546f70 ds "Top"
1000:0048410f 02 db 02
1000:00484110 07 db 07
s_Width:
1000:00484111 055769647468 ds "Width"
1000:00484117 02 db 02
1000:00484118 1f db 1f
s_Height:
1000:00484119 06486569676874 ds "Height"
1000:00484120 02 db 02
1000:00484121 0d db 0d
s_Caption:
1000:00484122 0743617074696f6e ds "Caption"
1000:0048412a 06 db 06
s_Name_:
1000:0048412b 054e616d653a ds "Name:"
1000:00484131 00 db 00
1000:00484132 00 db 00
s_TLabel:
1000:00484133 06544c6162656c ds "TLabel"
s_Label2:
1000:0048413a 064c6162656c32 ds "Label2"
s_Left:
1000:00484141 044c656674 ds "Left"
1000:00484146 02 db 02
1000:00484147 1d db 1d
s_Top:
1000:00484148 03546f70 ds "Top"
1000:0048414c 02 db 02
1000:0048414d 32 db 32 ;'2'
s_Width:
1000:0048414e 055769647468 ds "Width"
1000:00484154 02 db 02
1000:00484155 57 db 57 ;'W'
s_Height:
1000:00484156 06486569676874 ds "Height"
1000:0048415d 02 db 02
1000:0048415e 0d db 0d
s_Caption:
1000:0048415f 0743617074696f6e ds "Caption"
1000:00484167 06 db 06
s_Registration_Code_:
1000:00484168 125265676973747261.. ds "Registration Code:"
1000:0048417b 00 db 00
1000:0048417c 00 db 00
s_TEdit:
1000:0048417d 055445646974 ds "TEdit"
s_Edit1:
1000:00484183 054564697431 ds "Edit1"
s_Left:
1000:00484189 044c656674 ds "Left"
1000:0048418e 02 db 02
1000:0048418f 1d db 1d
s_Top:
1000:00484190 03546f70 ds "Top"
1000:00484194 02 db 02
1000:00484195 18 db 18
s_Width:
1000:00484196 055769647468 ds "Width"
1000:0048419c 03 db 03
1000:0048419d b1 db b1
1000:0048419e 00 db 00
s_Height:
1000:0048419f 06486569676874 ds "Height"
1000:004841a6 02 db 02
1000:004841a7 15 db 15
s_MaxLength:
1000:004841a8 094d61784c656e677468 ds "MaxLength"
1000:004841b2 02 db 02
1000:004841b3 14 db 14
s_TabOrder:
1000:004841b4 085461624f72646572 ds "TabOrder"
1000:004841bd 02 db 02
1000:004841be 00 db 00
s_OnChange:
1000:004841bf 084f6e4368616e6765 ds "OnChange"
1000:004841c8 07 db 07
s_Edit1Change:
1000:004841c9 0b4564697431436861.. ds "Edit1Change"
1000:004841d5 00 db 00
1000:004841d6 00 db 00
s_TEdit:
1000:004841d7 055445646974 ds "TEdit"
s_Edit2:
1000:004841dd 054564697432 ds "Edit2"
s_Left:
1000:004841e3 044c656674 ds "Left"
1000:004841e8 02 db 02
1000:004841e9 1d db 1d
s_Top:
1000:004841ea 03546f70 ds "Top"
1000:004841ee 02 db 02
1000:004841ef 45 db 45 ;'E'
s_Width:
1000:004841f0 055769647468 ds "Width"
1000:004841f6 03 db 03
1000:004841f7 b2 db b2
1000:004841f8 00 db 00
s_Height:
1000:004841f9 06486569676874 ds "Height"
1000:00484200 02 db 02
1000:00484201 15 db 15
s_MaxLength:
1000:00484202 094d61784c656e677468 ds "MaxLength"
1000:0048420c 02 db 02
1000:0048420d 14 db 14
s_TabOrder:
1000:0048420e 085461624f72646572 ds "TabOrder"
1000:00484217 02 db 02
1000:00484218 01 db 01
s_OnChange:
1000:00484219 084f6e4368616e6765 ds "OnChange"
1000:00484222 07 db 07
s_Edit2Change:
1000:00484223 0b4564697432436861.. ds "Edit2Change"
1000:0048422f 00 db 00
1000:00484230 00 db 00
1000:00484231 00 db 00
s_TEdit:
1000:00484232 055445646974 ds "TEdit"
s_Edit3:
1000:00484238 054564697433 ds "Edit3"
s_Left:
1000:0048423e 044c656674 ds "Left"
1000:00484243 02 db 02
1000:00484244 20 db 20 ;' '
s_Top:
1000:00484245 03546f70 ds "Top"
1000:00484249 03 db 03
1000:0048424a 90 db 90
1000:0048424b 00 db 00
s_Width:
1000:0048424c 055769647468 ds "Width"
1000:00484252 03 db 03
1000:00484253 ad db ad
1000:00484254 00 db 00
s_Height:
1000:00484255 06486569676874 ds "Height"
1000:0048425c 02 db 02
1000:0048425d 15 db 15
s_TabOrder:
1000:0048425e 085461624f72646572 ds "TabOrder"
1000:00484267 02 db 02
1000:00484268 03 db 03
1000:00484269 00 db 00
1000:0048426a 00 db 00
1000:0048426b 00 db 00

There is a lot of information there, sorry to dump it all in. We notice that this is the resource for the registration screen. It is called TForm7.

A close look reveals that the Register button is Button 1 and the Cancel button is button 2.

We note that since the compiler is Delphi there are a lot of strings in the Code Segment (stupid compiler), and quite a few 'Form' type strings. It doesn't take a lot to find the following section of code:


s_Edit1:
1000:0043f91b 054564697431 ds "Edit1"
1000:0043f921 f4 db f4
1000:0043f922 01 db 01
1000:0043f923 00 db 00
1000:0043f924 00 db 00
1000:0043f925 03 db 03
1000:0043f926 00 db 00
s_Edit2:
1000:0043f927 054564697432 ds "Edit2"
1000:0043f92d f8 db f8
1000:0043f92e 01 db 01
1000:0043f92f 00 db 00
1000:0043f930 00 db 00
1000:0043f931 03 db 03
1000:0043f932 00 db 00
s_Edit3:
1000:0043f933 054564697433 ds "Edit3"
;XREFS
1000:0043f939 04 db 04
1000:0043f93a 00 db 00
1000:0043f93b 13 db 13
1000:0043f93c 00 db 00
1000:0043f93d c0f94300 dd offset 43f9c0h
s_Button2Click:
1000:0043f941 0c427574746f6e3243.. ds "Button2Click"
1000:0043f94e 13 db 13
1000:0043f94f 00 db 00
1000:0043f950 c8f94300 dd offset RegisterButton
s_Button1Click:
1000:0043f954 0c427574746f6e3143.. ds "Button1Click"
1000:0043f961 12 db 12
1000:0043f962 00 db 00
1000:0043f963 88fa4300