Zum Inhalt wechseln

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen

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.
 

   

Foto

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

- - - - -

  • Bitte melde dich an um zu Antworten
3 Antworten in diesem Thema

#1
DeepWater

DeepWater

    Noob

  • Members
  • PIPPIP
  • Likes
    3
  • 5 Beiträge
  • 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?


Bearbeitet von DeepWater, 18 April 2018 - 08:55 Uhr.


#2
DeepWater

DeepWater

    Noob

  • Members
  • PIPPIP
  • Likes
    3
  • 5 Beiträge
  • 0 Bedankt
  • Android, Android [root]
  • Windows

Gelöst



#3
gr33d

gr33d

    Pentester

  • Premium Member
  • Likes
    169
  • 130 Beiträge
  • 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 Beiträge
  • 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! :)


Bearbeitet von DeepWater, 19 April 2018 - 13:40 Uhr.

  • gr33d gefällt das



  Thema Forum Themenstarter Statistik Letzter Beitrag

Auch mit einem oder mehreren dieser Stichwörter versehen: C++

Besucher die dieses Thema lesen:

Mitglieder: , Gäste: , unsichtbare Mitglieder:


This topic has been visited by 25 user(s)


    3eyes, Bot4ng, 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.