Перевод: Rob [www.delphiday.blogspot.com]
Номер тьюториала: #1, Basic Assembly Program Skeleton.
IT-Блог о программировании и операционных системах
Данный тьюториал покажет основы написания лоудеров. Написан начинающим немецким реверсером и программистом. Изложено доступно, приведён исходный код лоудера. Перевод в некоторых местах вольный. Автор статьи постарался доступным языком, для таких же новичков как и он, обьяснить то, чего сам не мог понять из за отсутствия материала, то есть той базы, которой некоторое время не хватало ему. Статья будет очень интересна новичкам в реверсинге и программировании.
Application.Initialize; Application.CreateForm(TForm1, Form1); // Application.CreateForm(TForm2, Form2); // Application.CreateForm(TForm3, Form3); // Application.CreateForm(TForm4, Form4); // Application.CreateForm(TForm5, Form5); Application.Run;
procedure TForm1.ShowAboutBox(); begin Application.CreateForm(TForm2, Form2); Form2.Show; end;
if not Assigned(Form2) then Application.CreateForm(TForm2, Form2); Form2.Show;
procedure TMainForm.AboutButtonClick(Sender: TObject); begin Self.ShowAboutBox; end; procedure TMainForm.ShowAboutBox; begin if not Assigned(AboutBox) then Application.CreateForm(TAboutBox, AboutBox); AboutBox.Show; end; procedure TAboutBox.FormClose(Sender: TObject; var Action: TCloseAction); begin Self.Free; AboutBox:=nil; end;
function asm_strlen(s:string):integer; asm mov eax,dword ptr[eax-4] end;
procedure asm_setlen(s:string;Size:Dword); asm mov dword ptr[eax-4],edx end;
procedure(...) Dword(Pointer(Dword(Pointer(Str))-4)^) := size; end; ...