Ich muss Markierungen in C++ - Code setzen, die in Assembly oder Binär angezeigt werden sollten. Es scheint es gerade nach vorne, es zu tun für 32 Inline-Montag mit:Wie setze ich Assemblierungsmarker zu C++ - Code (x64)
__asm {
NOP
NOP
NOP
}
oder mit DB Montage Aussage:
__asm {
DB 0x00, 0xFF, 0x10
}
Aber Visual Studio 2005 und besser nicht Inline-Assembler für x64 unterstützt. Gibt es einen Weg, es zu tun? Wahrscheinlich kann ich eine Funktion im separaten Assembly-Modul erstellen, aber wie kann ich sicher sein, dass Linker dort eine tatsächliche Assembly anstelle von CALL setzt?
Der Linker fügt keine 'CALL'-Anweisungen ein, sondern gibt nur die tatsächliche Adresse ein. Der Compiler hat die 'CALL' in Ihre Assembly eingefügt. Aber warum brauchst du das? Ist eine "CALL well-known-address" nicht als Marker verwendbar? – MSalters
Ja, es könnte der Weg sein: Finde den Marker und seine Adresse und finde dann CALLs dieser Adresse. – ChatCloud
Eigentlich ist es eine gute Lösung. Es gibt einige verwandte Artikel http://www.codereversing.com/blog/?p=69 – ChatCloud