Eure größten Programmier Fails!
|
v
ROCPBF, ROIGBF ;O
|
v
ROCPBF, ROIGBF ;O
ja das stimmt danke für die aufklärung damit gehts einfacherQuote:
Mit der memcpy funktion kann man auch speicherstellen im eigenen speicherbereich umschreiben. Und nach einer injection befindet sich die DLL ja im selben speicherbereich des programmes in dem injectiert wurde.
So zum Beispiel..Quote:
ja das stimmt danke für die aufklärung damit gehts einfacher
that works ? cool :DQuote:
#include "stdafx.h"
#include <limits>
#include <windows.h>
DWORD __stdcall ChangePts(LPVOID lpThreadParameter)
{
//Memories
while(true)
{
if(GetAsyncKeyState(0x22))
{
while(GetAsyncKeyState(0x22))
{
Sleep(100);
}
*(unsigned long*) (0x08237810) = (*(unsigned long*) (0x08237810)+1000);
}
}
return 1;
}
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
CreateThread(
NULL,
NULL,
ChangePts,
NULL,
NULL,
NULL
);
}
else{
return TRUE;
};
return TRUE;
}
unerwartete probleme ? welche z.b. . bei mir sind noch nie welche aufgetauchtQuote:
Man sollte für CreateThread eine richtige Thread Routine anlegen, das kann sonst zu unerwarteten Problemen führen.
Code:#include "stdafx.h" #include <limits> #include <windows.h> DWORD __stdcall ChangePts(LPVOID lpThreadParameter) { //Memories while(true) { if(GetAsyncKeyState(0x22)) { while(GetAsyncKeyState(0x22)) { Sleep(100); } *(unsigned long*) (0x08237810) = (*(unsigned long*) (0x08237810)+1000); } } return 1; } BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) { CreateThread( NULL, NULL, ChangePts, NULL, NULL, NULL ); } else{ return TRUE; }; return TRUE; }
solange es funktioniert ist mir das egal programmiere ja nicht für geld :)Quote:
Man kann Probleme mit dem Stack bekommen, weil CreateThread einen lpThreadParameter Pointer übergibt und wenn die Funktion keinen lpThreadParameter pointer übernimmt ist das verhalten undefiniert.
Solange man keine ThreadParameter übergibt sollte es aber keine Probleme machen, nur gehört es zu einem guten Programmierstiel dazu FunktionPointer nicht unnötig zu casten, also lieber gleich den Funktions Prototypen richtig programmieren als irgendwann später mal ärger damit zu haben.