Zpět na seznam článků     Zpět na článek

Komentáře ke článku

 
 
 BBCode
fgh | 178.41.99.*1.9.2012 15:58
Zdravim. V prvom rade vdaka za super clanok :) Za druhe by som mal jednu otazku: Na konci clanku je kod v C so shellkodom, ktory mi ale z nejakeho dovodu nefunguje. Adresy v shellkode som samozrejme zmenil, 3x byte po byte som cely kod skontroloval, ale nic to nerobi. Spustim program a ihned sa vypne (ziadna chybova hlaska). Netreba nahodou nastavit nejake parametre pre compiler(mam mingw32) ? Pouzivam winXp(bez service packov) vo virtualnej masine. Vdaka
babca | 213.226.251.*1.6.2007 20:09
Tak do tejdne by se tu melo objevit pokracovani, pac uz mam zase kapku casu :).
q | 82.208.44.*21.5.2007 15:05
teda 256 (0-255) :)
qaaz | 82.208.44.*21.5.2007 14:33
1) pocet preruseni je 255, krome rezervovanych, muze system pouzit pro syscall kterekoliv volne preruseni (v tom dosu 0x21, linux/bsd 0x80, windows 0x2e, ...)
2a) microsoft myslenku preruseni samozrejme neopustil, linux i windows (a ostatni systemy pro procesory x86 s kernelem bezicim v jine vrstve chraneneho modu) pouzivaji pro syscall int nebo sysenter. jsou i jine zpusoby vyvolani kodu s jinym CPL, ale to je tady OT.
2b) syscally se v shellcode pro windows nepouzivaji, protoze se lisi pro jednotlive verze windows (coz neni az tak drasticke a s trochou znalosti se i ve windows daji pouzivat primo syscally), misto toho se tedy vyhledavaji a pouzivaji funkce, ktere syscall provedou za nas. stejne se to da delat i v linuxu a jinych systemch (komplikace, resitelna, je u staticky linkovanych programu). dalsim duvodem pro pouziti funkci je to, ze nektere operace jsou prilis slozite a tak se pouzivaji funkce, ktere je provedou za nas.
3) v nekterych mistech placnes uplny nesmysl, ktery vzapeti "opravis". bud je to nesikovnym vyjadrovanim, nebo neznalosti.
4) ten kousek o pouziti XOR misto MOV je uplne na nic - zacatecnik nepochopi proc zrovna tahle zamena a instrukci obsahujicich nuly je samozrejme mnohem vic. pritom by stacil jednoduchy odstavecek o principu kodovani opcodu a jejich zamene za null-free verze.
5) jinak ten clanek ujde :)
babca | 213.235.188.*20.5.2007 14:16
S tim _T() mas pravdu, toho sem si nevsiml. Hold nikdo nejsme dokonalej. :)
Jaroslav Šmíd | 88.102.113.*19.5.2007 20:15
64bit? eax asi nebude 64bitový ... Jak se v něm může vrátit pointer? Další chyba v zápisu fce MessageBoxA, to _T() tam nemá co dělat, to má být JEN u (makra) MessageBox, které je definováno jako MessageBoxW nebo MessageBoxA v závislosti na použití UCS2, podle toho se také rozvine makro _T() na L"řetězec" či "řetězec". Schválně si nastavte UCS2 v kompilátoru a zkuste přeložit MessageBoxA( 0, _T("bla"), _T("bla"), 0 ) ... voala, chybička se vloudila. Naučte se pořádně WinAPI :-) Nejsem si jistý, ale v C snad není nutné volat tu funkci (int)(*func)() ... mělo by stačit func(), nebo alespoň v C++ to tak funguje.
babca | 80.188.22.*14.5.2007 12:16
sry, nedostatek informaci :)
ventYl | 88.212.22.*11.5.2007 15:20
to, ze Linux dnes este stale pouziva INT na skok z userspace do kernelu instrukciu INT je hovadina ;) na dostatocne novom procesore a s dostatocne novym kernelom sa pouziva instrukcia sysenter, ktora je radovo rychlejsia.

for more info:[link]
babca | 213.226.251.*8.5.2007 16:39
to guguma: S tim textem mas pravdu, dalo by se tamusetrit par bajtu, ale na pochopeni je to takhle lepsi. Pokud umis asm tak si s tim muzes hrat.

Dale, vssecny funkce ve win vraciji sve hodnoty v registru eax, takze tam se tam ten hadle napsal.

Volat primo adresu neni mozne (aspon me to neslo), tak se musela ulozit do registru(je jedno jakej), tak proto tam je to mov ebx, xxxx; call ebx.

s tim navestim mam_zpravu, si ted tak uplne jistej nejsem, ale myslim, ze to mulovani tam je nutny, pac v edx byla uz jina hodnota, tak nevim, jeste se mrknu, jestli tam je tnutny.

To posledni nulovani edx je proto, ze pri volani ExitProcess je potreba dat tzv. exit status (proste jestli program skoncil s chybou nebo ne) 0 = bez chyb, proto sem ten regist nuloval a potom hodil na zasobnik. Jinak v tom prvnim koduje chyba, edx se nemusi nulovat.

Jinak diky za pripominky :)
ask@t | E-mail | ICQ 200-358-1688.5.2007 9:43
Uzasny proste za 1.

Stránky: 1 2 3