[ Vojislav Milunovic @ 01.12.2004. 01:57 ] @
Naime ovaj shellcode koristi hash da nadje API iz dll-a... kod nije optimizovan uopste jer sam nastojao samo da ga pokrenem =)
Pa ko oce da optimizuje nek izvoli =) (ako se snadje u ovome)
Ahhhhhhh da kod bre ljudi pa ovo je cjudo koliko je veliko...
p.s. shellcode ako ocete da radi kako treba maknite linije
invoke WSAstarup...
i
mov ebp, offset ahh

kompajlirajte izvucite to iz code semgenta i igrajte se do mile volje =)

Naime da pojasnim kod ukratko ->>
prvo sam sam naso ove chksumove doduse provereno rade na ws2_32.dll i kernel32.dll ali mi se zbunjuje algoritam kod user32.dll MessageBoxA ima isiti checksum kao GetClassNameW =( bedak zar ne =)
doduse sa kernel32.dll i ws2_32.dll radi ko bog...
Progy ima svoju proceduru GetProcHash koja trazi API sa istim chechsumom kao sto je i nas koji mu dajemo :
Code:

push hash
push dll_handle
call GetProcHash

adrese se upisuju umesto hasha na kraj koda ili ako zelite da ga testirate ovako onda se upisuju u .data segment...
U progyju ima fja loadaddr koja je automatizovana da najde odredjeni broj APIja pozivaju GetProcHash =)
Doduse ovo sam maznu od HSJ pa malo preradio za moje potrebe =)
i to je to, cmd.exe ce se bindovati na port 5555 kad zavrsite progy ce mirno izaci ko da nista nije ni bilo...
Ako nekoga zbunjuje kod nek mi se slobodno obrati na mail koji ima u source_file...
<c0mrade@(NOSPAM_TNX)atlas.cz>

ahhhh 3 sata debugovanja i pisanja...
Ko voli nek izvoli... kod nije xorovan niti ista... to moze da uradi neko ako hoce, ovo je samo za ucenje... i meni je dobro posluzilo da se malo podsetim starih dana =)
Pa toliko od mene =)
A da pisano po poslednjem ISO_MASM standardu =) tako da ne kompajlirajte iz tasm-a jer cete se dzabe nervirati =)

poz...
[ Sundance @ 01.12.2004. 03:00 ] @
Opet netko otkriva toplu vodu :))

Ali ok je - cim je za ucenje... Ja sam svoj prvi shellcode pisao 1 popodne + jos 1 za optimizaciju sa oko 1.5k na 0x300 bajtova :) Ovakve stvari napises, skontas, zaboravis detalje implementacije i sjecas se samo principa. Kad ti treba samo shellcode[] ="\x..."; :)

Cini mi se da bi ti hash fja imala jako puno kolizija...ali ako radi ok je.

Jos samo da se rijesis null bajtova :)
[ Vojislav Milunovic @ 01.12.2004. 17:42 ] @
Ma kake crne kolizije radi ko bog =)
A null pa to cemo xor ceo kod i eto resenja =))
Mada stvarno ovo je cudo, najmanji kod mi je na Linuxu execve bio samo 20-21 byte, pazi ti ovo cudo... 400 bytova mada ima resenja da se smanji ali kako me to mrzi da radim =))