A pointer to a variable that receives the previous access protection value of the first page in the specified region of pages. If this parameter is NULL or does not point to a valid variable, the function fails.
Das letzte Parameter sollte nicht 0 sein, sondern eher &Protection.
Das letzte Parameter sollte nicht 0 sein, sondern eher &Protection.
Richtig, aber er brauch auch nicht jeden von den 3. Adressen die Protection der Memory-Page ändern, weil VirtualProtect die ganze Protection der Memory-Page ändert & nicht nur der Adresse & Größe die man angibt ..
Das ist so nicht ganz richtig: Man kann nicht sicher wissen, dass alle drei in der selben Page sind. Richtig wäre, VirtualProtect über ein Interval aufzurufen, dass alle drei Zeiger enthält.
Das ist so nicht ganz richtig: Man kann nicht sicher wissen, dass alle drei in der selben Page sind. Richtig wäre, VirtualProtect über ein Interval aufzurufen, dass alle drei Zeiger enthält.
Ich meine ja nur, weil ich weiß das sie alle in einer Page sind
Der Thread hier ist hauptsächlich dazu da, um dir bei Problemen zu helfen. Klar, kleinere Sources wirst du hier oft bekommen, wie z.B. die Patch Methode. Aber einen Bypass shared bestimmt niemand mit dir. Versuch es erstmal selbst und wenn es nicht klappt, dann können wir dir vielleicht helfen.
005FBFBD |. 8B3D F02FA500 MOV EDI,DWORD PTR DS:[A52FF0]
005FBFC3 |. 33DB XOR EBX,EBX
005FBFC5 |. 399F 98B70200 CMP DWORD PTR DS:[EDI+2B798],EBX
005FBFCB |. 75 19 JNZ SHORT 005FBFE6
005FBFCD |. B8 05400080 MOV EAX,80004005
005FBFD2 |. 8B4C24 78 MOV ECX,DWORD PTR SS:[ESP+78]
005FBFD6 |. 64:890D 00000>MOV DWORD PTR FS:[0],ECX
005FBFDD |. 59 POP ECX
005FBFDE |. 5F POP EDI
005FBFDF |. 5E POP ESI
005FBFE0 |. 5D POP EBP
005FBFE1 |. 5B POP EBX
set 0xA52FF0 to our struct
005FC3CF |> 8BBF 30B90200 MOV EDI,DWORD PTR DS:[EDI+2B930] ; Default case of switch 005FC31C
005FC3D5 |. 8B07 MOV EAX,DWORD PTR DS:[EDI]
005FC3D7 |. 8B48 44 MOV ECX,DWORD PTR DS:[EAX+44]
005FC3DA |. 6A 00 PUSH 0
005FC3DC |. 6A 00 PUSH 0
005FC3DE |. 6A 00 PUSH 0
005FC3E0 |. 6A 00 PUSH 0
005FC3E2 |. 57 PUSH EDI
005FC3E3 |. FFD1 CALL ECX
so our struct must be like this:
struct
{
char originalData[0x2B930];
pD3DStruct2 vTableData;
} D3DStruct1, *PD3DStruct1;
struct
{
void* vTable[119];
} D3DStruct2, *PD3DStruct2;
now all you have to do is like this:
PD3DStruct1 shit = (PD3DStruct1)malloc(sizeof(D3DStruct1));
PD3DStruct2 shit2 = (PD3DStruct2)malloc(sizeof(D3DStruct2));
memcpy(shit, 0xA52FF0, 0x2B930);
// set your vtable (may copy it like this:)
void* vTableAddress;
__asm
{
push eax;
push edi;
mov edi, 0A52FF0h;
mov eax, dword ptr ds:[edi + 02B930h];
mov eax, dword ptr ds:[eax];
mov vTableAddress, eax;
pop edi;
pop eax;
}
shit->vTableData = vTableAddress;
Also ich versuche nen d3d hook ohne bypass oder so. Einfach nur MSDetours (ftw).
Es ist ja nämlich so dass HS nur die code section scannt?
Und EDI bekommt daten aus ner data section
Ist jetzt aus der hand geschrieben, fehler vorbehalten
Hab mal ne frage, bin mir nicht sicher obs theoretisch funktionieren würde:
(...)
Es ist ja nämlich so dass HS nur die code section scannt?
Und EDI bekommt daten aus ner data section
(...)
Nein, das wird nicht funktionieren. Warum?
Du kopierst eine bestimmte geschützte Speicherstelle an ungeschützten Speicher. Das ist soweit ok, aber woher soll das Spiel jetzt wissen, dass du die paar Bytes kopiert hast? Alles was du machst ist eine momentane Kopie, nicht aber eine Umleitung - was eh nicht so möglich wäre.
WarRock EU - Code Snippets 07/12/2012 - WarRock - 7490 Replies Hi Leute,
in diesem Thread könnt ihr:
-> Nach Sourcecodes fragen(Beispiel unten)
-> Eure Sourcecodes posten(Wenn sie nicht von euch sind mit Credits!)
-> Fragen ob eure Source evtl. einen Fehler hat
-> Fragen was welcher Fehler bedeuted
-> Sourcecodes entnehmen(Bitte beim Release dann Credits angeben!)