[ Vojislav Milunovic @ 13.02.2005. 02:35 ] @
Pre svega mislim da će se kod svideti suniju jer koristi x_push/x_pop (kako je jebeno ovo gledati u debugeru=))

Naime kod je offset indipendent, mislim može da bude ako eliminišemo proc_struct iz data segmenta i kreiramo funkciju odma na početku .code segmenta i local proc_struct...
Evi i sintakse funkcija ->
my_Load, dllName(ansi), pointer proc_struct
my_GetProc, dllHandle, api(ansi), pointer proc_struct

obavezno na početku koda mora da ide GiveMeGetProc koja prima pointer na proc_struct gde će se popuniti automatski LdrGetProcedureAddress i ntdll base...

Eto to sam sada skarabudžio i nadam sa da će se nekom svideti ovo =)



[ Sundance @ 14.02.2005. 03:11 ] @
Lijepo :)

Ima redundantnih dijelova, ali OK je :)

Mislim da ima svega 3-4 virusa koji koriste nativne API-je.

Sad će ih biti 4-5 :)

Napiši par bilješki, ima ovdje materijala i za poneki članak.. :>
[ Vojislav Milunovic @ 14.02.2005. 13:58 ] @
Pa sigurno da ima greski =)
Sad sam ispravio dosta stvari ali mi je u VMware ostao kod koji sam preradio =)
recimo GiveMeGetProc odma puni proc_struc sa ntdll i LdrGetProcedureAddress =)
A sad citam ceo kernel32.dll da vidim sta se moze lepo prepisati u native api bez muke.
Recimo VirtualAlloc -> VirtualAllocEx,-1 -> NtAllocateVirtualMemory
onda CloseHandle u NTClose
pa OpenProcess u NtOpenProcess
pa WriteProcessMemory u NTWriteProcessMemory i mali milion drugih koje nije tesko preraditi u native api =)

Ali je cudno koliko covek bolje shvati ovaj sistem recimo sve funkcije za manipulaciju memorijom i procesima obavezno imaju process handle sto znaci da se uvek moze alocirati memorija u drugom procesu, cak sta vise i CreateThread je ustavi CreateRemoteThread sa phandle -1 pa onda malo slozenija NtCreateThread i tako sve u krug =)

p.s. nema frke za beleske, ja to sve cuvam u posebnim fajlovima da bude lako citljivo, a sklapam u jedan po potrebi =)
[ Sundance @ 14.02.2005. 14:37 ] @
Citat:
Vojislav Milunovic: Ali je cudno koliko covek bolje shvati ovaj sistem recimo sve funkcije za manipulaciju memorijom i procesima obavezno imaju process handle sto znaci da se uvek moze alocirati memorija u drugom procesu, cak sta vise i CreateThread je ustavi CreateRemoteThread sa phandle -1 pa onda malo slozenija NtCreateThread i tako sve u krug =)


Eto vidiš, a ne k'o ovi wannabe .NET programeri završili 2-tjedni napredni kurs C# i misle ako znaju šta radi Thread.Join() da su popili svu pamet svijeta :)

Opet ti velim, obrati pažnju na mapiranja nativnih API-ja između različitih verzija kernela, inače će ti virus raditi samo na XP i samo na tom SP-u kojem imaš :>
[ Vojislav Milunovic @ 14.02.2005. 15:40 ] @
Pa sta mislis sto mi na VMware trci i win2k =) Ocu sve to da proverim, pre ngo sto pocnem da implementiram, mada me ubija sto nemam DDK, a tamo ima gomila interesatnih struktura =( mrzi me da se kacim na net svaki sekund i proveravam interne strukture =)