GetPC:
- adalah satu teknik digunakan utk dapatkan eip semasa. (dalam shellcode)
- http://skypher.com/wiki/index.php/Hacking/Shellcode/GetPC
Kaedah 1.
$+0: E8 00000000 CALL $+5 ; PUSH $+5 onto the stack $+5: 59 POP ECX ; ECX = $+5 $+6: ...shellcode...
Oleh kerana argument kepada CALL (E8) adalah relatif(offset) kepada kod CALL, maka value-nya ialah 0. Tapi nullbyte ni tak boleh guna dalam shell code.
Kaedah 2)
$+0 EB XX JMP SHORT $+N ; Jump to the call instruction $+5: 59 POP ECX ; ECX = $+N+5 $+6: ...shellcode... $+N: E8 FFFFFFXX CALL $+5 ; PUSH $+N+5 onto the stack and jump back to $+5
Kaedah ni limitationnya adalah pada saiz shellcode. Saiz maksimum adalah 126 bytes. Kalau nak lebih besar, kena buat jump pada lokasi $+N-2, jump kepada $+N+5.
Flow eip seperti berikut:
Flow eip seperti berikut:
- $+0
- $+N
- $+5 ; ecx dapat lokasi $+N+5
- $+6 ; execute shellcode
Kaedah 3)
$+0 EB FFFFFFFF CALL $+4 ; PUSH $+5 onto the stack and jump to $+4 $+5: C8 59XX XX ENTER XX59,XX ; Does not get executed like this; see below.
Kaedah guna trik yg menarik. Bila [call $+4 ] di larikan, EIP akan jadi $+4, bukan $+5. Jadi instruction yg akan dijalankan adalah spt berikut:
$+4: FFC8 DEC ECX ; Does nothing useful; can be considered a NOP. $+6: 59 POP ECX ; ECX = $+5 $+7: ...shellcode...
No comments:
Post a Comment
Terima kasih