Ładny brzuch
witam!
chcialem napisac wlasny loader w Delphi...
dziala on w ten sposob ze:
1. uruchamia jakis proces przez CreateProcess ale z parametrem suspend
2. zmienia okreslone adresu w pamieci (WriteProcessMemory)
3. wznawia dzialanie aplikacji (przez funkcjie API ResumeThread)
tylko nie wiem jak takie cus napisac :| (np jak uzyc plecenia CreateProcess zeby uruchomic proces [i do tego dac mu suspend])
pozdrawiam
Przykad na notatniku:procedure TForm1.Button1Click(Sender: TObject); var pi:tprocessinformation; si:startupinfo; buf, bs:pchar; r:cardinal; begin GetStartupInfo(si); CreateProcess('c:\windows\notepad.exe','',nil,nil,false,CREATE_SUSPENDED, nil,'c:\windows',si,pi); OpenProcess(PROCESS_ALL_ACCESS,false,pi.dwProcessId); bs:=ptr(16806813); buf:=#$6A#$40#$6A#$00#$68#$AD#$73#$00#$01#$6A#$ 00#$E8#$3D#$91#$D6#$76#$68#$65#$6C#$6C#$6F#$20#$ 77#$6F#$72#$6C#$64#$20#$3A#$29#$00; WriteProcessMemory(pi.hProcess,bs,buf,31,r); ResumeThread(pi.hThread); end;
dziala!! :-)
wielkie dzieki
a wiesz moze jak zrobic zeby podawac adres w szesnastkowym?
a wiesz moze jak zrobic zeby podawac adres w szesnastkowym?
ptr($adres_szesnastkowy);
:frusty:
omg jakie glupie pytanie :P (chyba nie wiedzialem co pisze)
btw wielkie dzieki wszystko dziala! xD
// a mam jeszcze takie pytanie...
jak program jest zpakowany i trzeba poczekac az sie rozpakuje i dopiero wtedy wprowadzic zmiany do pamieci?
Uytkownik tsukuyomi_reload edytowa ten post 30 sierpie 2006, 09:02
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
chcialem napisac wlasny loader w Delphi...
dziala on w ten sposob ze:
1. uruchamia jakis proces przez CreateProcess ale z parametrem suspend
2. zmienia okreslone adresu w pamieci (WriteProcessMemory)
3. wznawia dzialanie aplikacji (przez funkcjie API ResumeThread)
tylko nie wiem jak takie cus napisac :| (np jak uzyc plecenia CreateProcess zeby uruchomic proces [i do tego dac mu suspend])
pozdrawiam
Przykad na notatniku:procedure TForm1.Button1Click(Sender: TObject); var pi:tprocessinformation; si:startupinfo; buf, bs:pchar; r:cardinal; begin GetStartupInfo(si); CreateProcess('c:\windows\notepad.exe','',nil,nil,false,CREATE_SUSPENDED, nil,'c:\windows',si,pi); OpenProcess(PROCESS_ALL_ACCESS,false,pi.dwProcessId); bs:=ptr(16806813); buf:=#$6A#$40#$6A#$00#$68#$AD#$73#$00#$01#$6A#$ 00#$E8#$3D#$91#$D6#$76#$68#$65#$6C#$6C#$6F#$20#$ 77#$6F#$72#$6C#$64#$20#$3A#$29#$00; WriteProcessMemory(pi.hProcess,bs,buf,31,r); ResumeThread(pi.hThread); end;
dziala!! :-)
wielkie dzieki
a wiesz moze jak zrobic zeby podawac adres w szesnastkowym?
a wiesz moze jak zrobic zeby podawac adres w szesnastkowym?
ptr($adres_szesnastkowy);
:frusty:
omg jakie glupie pytanie :P (chyba nie wiedzialem co pisze)
btw wielkie dzieki wszystko dziala! xD
// a mam jeszcze takie pytanie...
jak program jest zpakowany i trzeba poczekac az sie rozpakuje i dopiero wtedy wprowadzic zmiany do pamieci?
Uytkownik tsukuyomi_reload edytowa ten post 30 sierpie 2006, 09:02