Code aus externer datei ausführen

05/18/2011 16:53 theredvex#1
Moin.

Ich weiß gerade nicht wie ich ansetzen soll aber wäre es möglich eine DLL zu injecten mit nem "Ausführen" button, sodass die DLL nachdem man auf den Button klickt ASM code aus einer TXT datei ausführt.
Wäre um einiges einfacher um die Funktionen zu reversen und verschiedene Pushs auszuprobieren.
Ich weiß gerade nicht wirklich wie ich anfangen soll da ich nichtmal genau weiß ob es überhaupt möglich ist.
05/18/2011 18:06 5769854332#2
ASM code ( ASCII push eax ) geht wohl eher nicht, Bytecode ( 0x50 ) schon:
Code:
//pseudocode
buffer=VirtualAlloc()   mit flProtect=PAGE_EXECUTE_READWRITE
CreateFile()
ReadFile(buffer)
jmp buffer
Einfacher ists mit inline asm, oder schreib die Dll mit MASM ( das kannst du [Only registered and activated users can see links. Click Here To Register...] downloaden).
05/18/2011 18:26 theredvex#3
Ich dachte eher so von wegen.

Code.txt
Code:
__asm
{
  PUSH BLA
  PUSH BLB
  PUSH BLC
  CALL BLD
}
und die dann einfach so importieren und direkt nach import ausführen.
05/18/2011 18:28 Xenox3#4
sscanf
getline
LUA
strcmp
strtok
05/18/2011 18:47 yihaaa#5
Wieso wills du das mit ASM machen? Mach eine C++ Dll und dann mach einen Funktionpointer. Das ist einfacher. Der ASM-Weg geht natürlich auch.

MfG
05/18/2011 21:35 MrSm!th#6
Joa, also wenn du den ASM Code in binärer Form speicherst, brauchst du die Datei nur einlesen, in ein Array speichern und das dann callen, aber damit der Text ausgeführt wird, brauchst du eine Assemblier-Lib, damit du den Text in die dazugehörigen Opcodes assemblieren kannst.

Versteh nur nicht ganz den Sinn dabei, das lässt sich sicher auch einfacher realisieren.
05/20/2011 06:24 theredvex#7
Code:
void EnterChat()
{
          const char msg[] = "Hook succeeded";
          __asm{
                 LEA EAX, msg
                 PUSH EAX
                 PUSH 0xFFCC66CC
                 PUSH 4
                 CALL EnterChatCall
                 ADD ESP, 0x0C
          }
}
wäre dieser Code richtig um die Chatausgabe zu starten? Ausgeben im chat tut er... nur nicht den satz sondern Hyroglyphen
05/20/2011 19:07 MrSm!th#8
1. Function Pointer ftw
2. richtige parameterreihenfolge, calling convention usw.?
3. ist es vielleicht ein unicode string? probier mal wchar_t
05/20/2011 22:32 theredvex#9
Quote:
Originally Posted by MrSm!th View Post
1. Function Pointer ftw
2. richtige parameterreihenfolge, calling convention usw.?
3. ist es vielleicht ein unicode string? probier mal wchar_t
Jo war ein UNICODE string. Stand sogar so in Olly *lol*.
Nun funktionierts.