[C] jak do char *tablica wpisać DWORD ?

0

Witam, piszę wirusa infekującego pliki PE i mam w fragmencie podmieniającym AddressOfEntryPoint napisane coś takiego:

// DWORD entry_p; <- tu mam wartość nowego EntryPoint
// char *base; <- tu jest zmapowany plik PE
base[mz->mz_peoffset+0x28] = entry_p;
base[mz->mz_peoffset+0x28+1] = entry_p/0x100;
base[mz->mz_peoffset+0x28+2] = entry_p/0x10000; 
base[mz->mz_peoffset+0x28+3] = entry_p/0x1000000;

to działa, ale chciałbym wiedzieć jak napisać to poprawnie, co się stosuje jak chcemy wpisać do adresu DWORD? Jak to napisać w jednej linijce? Znajomy powiedział mi, żebym zrobił coś takiego:

char *tmp;
tmp = (void *)base;

i do tmp wpisać tego DWORD ale nie wiem jak do tego podejść.

tmp[mz->mz_peoffset+0x28] = entry_p;

?
Byłbym wdzięczny za pomoc.

0

Bierzesz się wirusa a kłaniają się podstawy C, wystarczy zrzutować pointer do DWORD* i kompilator będzie dany fragment traktował jakby był tam DWORD

*(DWORD*)(base+mz->mz_peoffset+0x28) = entry_p;

Lepiej powtórz wskaźniki, bez bez tego trudno ci będzie napisać wirusa w C :>

0

Dzięki, nie przykładałem się jak przerabiałem wskaźniki :P a wirus już całkiem fajnie działa, dodaje kod do ostatniej sekcji i przywraca działanie zainfekowanego programu. A kod którym infekuje, sieje zniszczenie (wyskakuje okienko message box :D).

0 użytkowników online, w tym zalogowanych: 0, gości: 0