Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!
2014-02-08    Programowanie, Kod, Poradnik, C++, C, Asm, RE

W poprzednim poście wyjaśniłem uproszczone działanie returna. Dziś zaprezentuję jak go troszeczkę "zakamuflować".

Sposób nr I:
    void (*f)() = (void(*)())("\xB8\x00\x00\x00\x00\xC3");
    f();
Sposób nr II:
    __asm
    (
        "movl $0, %eax"
    );
 
 
Oba sposoby działają na tej samej zasadzie. Tzn. ustawiają wartość rejestru EAX.

W pierwszym kodzie posłużyliśmy się sprytnym wykorzystaniem wskaźnika na funkcje. Umożliwiło to nam pisanie na poziomie procesora. Drugi sposób zaś polega na zastosowaniu inline assembler.

Jeśli znacie jeszcze jakiś inny, ciekawy sposób to napiszcie w komentarzach.
Dodaj komentarz:
Nick:
URL(opcjonalnie):