Pokaż wyniki 1 do 5 z 5

Temat: Problem: asm->disasm->c++.exe

  1. #1
    Zarejestrowany
    Sep 2007
    Postów
    55

    Domyślnie Problem: asm->disasm->c++.exe

    Robilem poszczegolne kroki:

    stworzylem kod asma jako moj shellcode:
    .386



    .model flat, STDCALL

    include C:\masm32\include\kernel32.inc
    includelib C:\masm32\lib\kernel32.lib

    .data

    .code

    start:

    xor eax,eax

    mov eax,Beep+111111111 ;putting address of beep call

    sub eax,111111111;



    xor ebx,ebx
    mov bl,200
    push ebx;
    push ebx;


    call eax ; calling beep

    xor eax,eax ; setting 0 to eax register

    mov eax,ExitProcess+111111111; putting address of exitprocess call
    sub eax,111111111;

    call eax ;calling exitprocess

    end start
    (dzialal)

    zdeasemblerowalem go:

    00401000 start:
    00401000 33C0 xor eax,eax
    00401002 B8E97BDF06 mov eax,6DF7BE9h
    00401007 2DC76B9F06 sub eax,69F6BC7h
    0040100C 33DB xor ebx,ebx
    0040100E B3C8 mov bl,0C8h
    00401010 53 push ebx
    00401011 53 push ebx
    00401012 FFD0 call eax
    00401014 33C0 xor eax,eax
    00401016 B8EF7BDF06 mov eax,6DF7BEFh
    0040101B 2DC76B9F06 sub eax,69F6BC7h
    00401020 FFD0 call eax
    00401022 FF2504204000 jmp dword ptr [Beep]
    00401028 FF2500204000 jmp dword ptr [ExitProcess]
    usunalem ostatnie dwie instrukcje

    A nastepnie zamienilem go na shellcode i wkleilem do c++:





    Kod:
    char c[]="\x33\xC0\xB8\xE5\x7B\xDF\x06\x2D\xC7\x6B\x9F\x06\x33\xDB\xB7\xC8\x53\x53\xFF\xD0\x33\xC0\xB8\xEF\x7B\xDF\x06\xFF\xD0";
    
    
    int main(){
    	void (*ptr)()=(void (*)())&c;
    	ptr();
        return  0;
    
    	}
    i nic.

    Kompilujac go code blockiem uzyskuje to:


    Process returned 51200 (0xC800) execution time : 0.031 s
    Press any key to continue.

    Co zrobilem zle

  2. #2
    Zarejestrowany
    Sep 2007
    Postów
    55

    Domyślnie

    Problem rozwiazany.

  3. #3
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    podzielisz sie z reszta ta tajemnica w jaki sposob rozwiazales?
    War, war never changes.

  4. #4
    Zarejestrowany
    Aug 2009
    Postów
    408

    Domyślnie

    kod wyglada dobrze (nie wnikam ze pisany w 'gorszym' asemblerze ani ze zawiera zbednie instrukcje).

    problem na 100% lezy w c, jak takie cos moze dzialac.

    void (*ptr)()=(void (*)())&c;

    pff, niech ktos mi nazwie to jezykiem to go wysmieje.

  5. #5
    Zarejestrowany
    Sep 2007
    Postów
    55

    Domyślnie

    W c tez lezy a teraz zdradzam tajemnice.
    Wszystko sie zaczelo gdy sciagnalem ollydbg.
    Mialam jakies pomysly ze skok pod adres ktory tam byl skakal gdzies do mojego programu. I mialem racje. Skakal do procedury ktora potem skakala do funkcji.
    Odkrylem potem adres prawdziwy caly kod od razu podam:
    start:

    mov eax,7C837ABFh


    xor ebx,ebx;
    mov bl,200;
    push ebx;
    push ebx;
    call eax;
    ret

    end start
    Zamienilem na shellcode a potem usunalem & sprzed &c

    I oto zamkniety jest dzial kolejnego kroku w przod

Podobne wątki

  1. Problem z explorer.exe
    By pit3r90 in forum Wirusy/Konie trojańskie
    Odpowiedzi: 0
    Autor: 07-11-2009, 18:24
  2. c + asm
    By esp666 in forum C/C++
    Odpowiedzi: 6
    Autor: 01-15-2009, 15:01
  3. asm - wady i zalety
    By GSG-9 in forum Assembler
    Odpowiedzi: 9
    Autor: 01-13-2009, 21:19
  4. Odpowiedzi: 7
    Autor: 04-11-2008, 13:03
  5. Problem z javac.exe
    By Sufler in forum Inne języki
    Odpowiedzi: 7
    Autor: 05-27-2007, 19:40

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52