01. december 2002 - 20:14
Der er
6 kommentarer og 1 løsning
Error under compalering i C++
Hej Eksperter...! Jeg har dette lille problem, med at jeg får denne fejl i Microsoft Visual C++ 6 når jeg prøver at compilere mit demostrerings program: ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ --------------------Configuration: exploit1 - Win32 Debug-------------------- Compiling... exploit1.cpp C:\Documents and Settings\Administrator\Desktop\exploit1.cpp(35) : error C2415: improper operand type Error executing cl.exe. exploit1.exe - 1 error(s), 0 warning(s) ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Min kildekode til programmet ser således ud: ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ #include <stdio.h> #include <stdlib.h> #include <fstream.h> #include <string.h> #include <process.h> void main(void) { char *Buffer = "", *Data = "test"; cout << "\n-----> EXPLOIT <-----\n"; cout << "Buffer overflow exploit v0.01b\n\n"; cout << "Executing main.exe ... \n"; if (system("main.exe")) { cout << "\nExecution of main.exe succeded!\n"; } else { cout << "\nExecution of main.exe failed!\n"; } cout << "Done executing main.exe ...\n"; _asm { mov eax, 0x0012FF94 mov Buffer, eax push 0x0 lea eax,[edi][0x0000000C0] push eax push ebx call 0x000414370 } cout << "Buffer contains: " << Buffer << ";\n"; cout << "Data contains: " << Data << ";\n"; cout << "-----> EXPLOIT <-----\n"; gets( Buffer ); } ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Jeg håber der er nogle der kan forklare hvad jeg kan gøre ved dette problem.... 150 Point, da det betyder meget for mig at få svar iaften. Truti
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
01. december 2002 - 20:20
#1
Fejlien ligger i denne linie: } i denne "blok": _asm { mov eax, 0x0012FF94 mov Buffer, eax push 0x0 lea eax,[edi][0x0000000C0] push eax push ebx call 0x000414370 } <---- DER ER FEJLEN! Truti
01. december 2002 - 20:38
#2
Hvis du går igang med at udkommentere linier i asm sekvensen, så vil du se at det er linien: call 0x000414370 der er problemet.
01. december 2002 - 20:40
#3
arne_v: Hvis du skulle give et muligt løsnings forslag hvad vile det så være ? Truti
01. december 2002 - 20:41
#4
Tilsyneladende så er MSVC++ ikke så glad for call af en absolut adresse. [desværre rækker mine masm kundskaber ikke til en workaround]
01. december 2002 - 20:45
#5
Hvis du kommer i tanke om noget er du meget velkommen til at skrive ind igen :-) Truti
01. december 2002 - 20:46
#6
Hvad er formålet med koden, altså asm delen ? For mig og se giver det ikke rigtigt mening - i et Windows program.. Du flytter nogle mere eller mindre tilfældige adresser over i nogle registre og kalder til sidst en også mere eller mindre tilfældig adresse. Virker lidt mystisk.. Hvor får du de pågældende adresser fra ? Uden at vide noget sikkert så tror jeg fejlen er denne linie: lea eax,[edi][0x0000000C0] Hvad er formålet med "[edi]" ? Prøv istedet noget ala: lea eax, dword ptr [0x0000000C0]
07. december 2002 - 18:03
#7
Jeg har selv fundet svar på mit prob...... Svaret var at 0x000414370 ikke ville retunere... Dette er nu iorden..... Truti
Kurser inden for grundlæggende programmering