Jump to content

Willkommen Gast

Navigation

Links

Als Gast hast du nur eingeschränkten Zugriff!


Sign In 

Create Account

Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.

  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Photo

Code Cave - Kernel-calls crashen, User32-calls nicht

- - - - -

  • Please log in to reply
3 replies to this topic

#1
DeepWater

DeepWater

    Noob

  • Members
  • PipPip
  • Likes
    3
  • 5 posts
  • 0 Bedankt
  • Android, Android [root]
  • Windows

Hey,

ich wollte mal die ganzen alten Malware Techniken durchgehen und bin dabei auf Codecaving gestoßen.

 

Ich allocate Memory in einem anderen Prozess und injiziere dann meine Funktion mit Parametern. 

Diese Parameter enthalten die Adressen der API Calls, die aufgerufen werden sollen.

Die liegen ja eigentlich (bei user32, kernel) immer bei allen Programmen beim selben Offset (pro Systemboot), also lade ich diese Adressen in meiner Anwendung und nicht erst in der injizierten Funktion.

// Adresse finden
HMODULE kernel32Module = GetModuleHandleA("Kernel32.dll");
params.addrSleep = (DWORD)GetProcAddress(kernel32Module, "Sleep");
FreeLibrary(kernel32Module);

// Speicher für Funktion allocaten
// (20000b nur zum testen)
LPVOID pRemoteThread = VirtualAllocEx(hProcess, NULL, 20000, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pRemoteThread, (LPVOID)RemoteThread, 20000, 0);

// Speicher für Parameter allocaten
Parameters* pParams = (Parameters*)VirtualAllocEx(hProcess, NULL, sizeof(Parameters), MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, pParams, &params, sizeof(Parameters), NULL);

// Remote Thread starten
HANDLE hThread = CreateRemoteThread(hProcess, 0, 0, (LPTHREAD_START_ROUTINE)pRemoteThread, pParams, 0, 0);





// Parameter 
typedef VOID(WINAPI * fnSleep)(DWORD ms);

class Parameters {
public:
	DWORD addrSleep;
};

// Injizerte Func 
DWORD __stdcall RemoteThread(Parameters* params) {
	fnSleep _Sleep = (fnSleep)params->addrSleep;

	while (true) {
		_Sleep(5000);
	}
	return EXIT_SUCCESS;
}

Der Prozess, in den ich versuche den Code zu injizieren, "schläft" für die angegebene Zeit (5000 ms) und stürzt dann ab.

Wenn ich hingegen Funktionen aus User32 lade, klappt alles prima... Korrupte ich irgendwie den Stack?


Edited by DeepWater, 18 April 2018 - 08:55 Uhr.


#2
DeepWater

DeepWater

    Noob

  • Members
  • PipPip
  • Likes
    3
  • 5 posts
  • 0 Bedankt
  • Android, Android [root]
  • Windows

Gelöst



#3
gr33d

gr33d

    Pentester

  • Premium Member
  • Likes
    169
  • 130 posts
  • 471 Bedankt
  • Android [root]
  • Windows, Linux
Wie hast du es den gefixt? Bzw woran lag es schlussendlich?

#4
DeepWater

DeepWater

    Noob

  • Members
  • PipPip
  • Likes
    3
  • 5 posts
  • 0 Bedankt
  • Android, Android [root]
  • Windows

Durch die Compilierung im Debug-Modus war die Funktion schlussendlich größer als ich Speicher allokiert habe und ich hatte einen kleineren Fehler in der Größe des Speichers drin.

Wenn gewünscht, kann ich auch noch einmal eine funktionierende Version veröffentlichen! :)


Edited by DeepWater, 19 April 2018 - 13:40 Uhr.

  • gr33d likes this



  Topic Forum Started By Stats Last Post Info

Also tagged with one or more of these keywords: C++

user(s) are reading this topic

members, guests, anonymous users


This topic has been visited by 24 user(s)


    3eyes, cubik, DeepWater, docsnider, fothermucker, Framerater, gr33d, hacked, herp, kiwitone, leonalexkraus, mesagio, Mini Rick, n1nja, o0o, PadX18, PHIPU, rsneumann, s3ff, sub0, T00LStar, VerZus, Xenio, xxas
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.