Pokaż wyniki 1 do 8 z 8

Temat: problem z szelkodem

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Zarejestrowany
    Dec 2007
    Postów
    271

    Domyślnie problem z szelkodem

    Kod:
    shellcode db 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x00, 0xFF, 0x15, 0x8C, 0x30, 0x40, 0x00, 0xC3
    nie ukrywam ze nie umiem jeszcze pisac shelkodow, to jest moj pierwszy. Dlatego w dziale newbie.
    push 0
    push 0
    push 0
    push 0
    call [MessageBoxA]
    retn 0


    wiem rowniez ze biblioteki sa ladowane pod stale adresy w pamieci w danym systemie.
    Ale to nie dziala, co zle zrobilem? Proces ma handle ALL_ACCESS, zapisuje sie poprawnie. Ale nie dziala (crash programu).

  2. #2

    Domyślnie

    Cytat Napisał h3x Zobacz post
    Kod:
    shellcode db 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x00, 0x6A, 0x00, 0xFF, 0x15, 0x8C, 0x30, 0x40, 0x00, 0xC3
    nie ukrywam ze nie umiem jeszcze pisac shelkodow, to jest moj pierwszy. Dlatego w dziale newbie.
    push 0
    push 0
    push 0
    push 0
    call [MessageBoxA]
    retn 0


    wiem rowniez ze biblioteki sa ladowane pod stale adresy w pamieci w danym systemie.
    Ale to nie dziala, co zle zrobilem? Proces ma handle ALL_ACCESS, zapisuje sie poprawnie. Ale nie dziala (crash programu).
    null byte - wyeliminuj z shellcode funkcje przestaja kopiowac po napodkaniu owego bajtu

  3. #3
    Zarejestrowany
    Dec 2007
    Postów
    271

    Domyślnie

    to nie tego wina, nie uzywam go do wysploitowania funkcji str*, tylko writeprocessmemory + remotethread

  4. #4
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Mnie zawsze uczono że shellcode nie może mieć 0x00 w sobie. Może zrób:
    xor eax, eax
    push eax
    push eax
    push eax
    push eax
    call [MessageBoxA]
    retn eax

    I wiesz co mi się jeszcze wydaje? Nigdy nie programowałem w assemblerze pod windowsa, ale wydaje mi się że MessageBoxA jest ETYKIETĄ, przez co powinno być "Call MessageBoxA" więc według mnie powinno być coś takiego:
    Kod:
    xor eax, eax
    push eax
    push eax
    push eax
    push eax
    call MessageBoxA
    Wiesz co, jestem tego pewien na 99.99%
    Ostatnio edytowane przez Nikow : 01-20-2008 - 08:24

  5. #5
    Zarejestrowany
    Dec 2007
    Postów
    271

    Domyślnie

    widze ze nikt tu nie rozumie o co mi chodzi... prosze zamknac temat, moze dostane odpowiedz gdzie indziej.

    ps:

    MessageBoxA = adres 4 bajtow alokowanych statycznie
    [MessageBoxA] = dword [MessageBoxA] = 4 pierwsze bajty pod tym adresem


    Mnie zawsze uczono że shellcode nie może mieć 0x00 w sobie.
    a szkoda ze nie uczono cie dlaczego.
    http://pl.wikipedia.org/wiki/String
    Ostatnio edytowane przez h3x : 01-20-2008 - 08:57

  6. #6
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Wiem dlaczego, jeśli o to Ci chodzi. Tylko nie wiem skąd mamy wiedzieć dlaczego Ci program nie działa widząc jego jedną procedurę. Nawet nie powiedziałeś jaki program Ci się wywala, jak wstrzykujesz shellcode. Znam też różnicę między podaniem czegoś w '[' i ']' a bez tego. Skąd mamy wiedzieć co jest nie tak, jak nawet nie wiemy czy jesteś w jakiejś procedurze? Jeśli nie to od razu widać. Po drugie wydaje mi się że źle wywołujesz to okno, struktura MessageBox jest następująca:
    Kod:
    int MessageBox(      
        HWND hWnd,
        LPCTSTR lpText,
        LPCTSTR lpCaption,
        UINT uType
    );
    Szczegółowe info znajdziesz tu >> http://msdn2.microsoft.com/en-us/library/ms645505.aspx <<
    CoreDump i "Objawy crashu"(mesgi itd.) by się przydały.

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj