Ich versuche, diese Linie Bei der Montage, wie kann ich einen 5-Byte-Befehl in einen 3-Byte-Raum im Debugger hinzufügen
zu
0041DE91 | mov eax, 10
Aber der Anweisung zu ändern
0041DE91 | 8B 46 64 | mov eax,dword ptr ds:[esi+64]
0041DE94 | 83 C4 0C | add esp,C
0041DE97 | 83 F8 01 | cmp eax,1
das war 3 Byte belegt 5 Bytes und Leckagen in den beiden Adressen darunter:
0041DE91 | B8 0A 00 00 00 | mov eax,10
0041DE96 | 0C 83 | or al,83
0041DE98 | F8 | clc
Ist es möglich, dies in einem Debugger ein zu tun vorkompiliertes Programm?
nein. nicht ohne den Rest des Codes NACH dem Einfügepunkt zu hacken, um alles um 2 Byte zu verschieben. oder in der Hoffnung, dass ein anderes Register eine Null enthält, so dass Sie dort keine 32-Bit "Null" einbetten müssen. –
Jetzt denkst du. Ich brauche eine Nummer, die nicht Null im Register ist. – user5389726598465
warum nicht 'xor eax, eax'? das wird das Register auf null setzen, nur ein oder zwei Bytes benutzen. –