Мне нужно поместить маркеры на код C++, который должен быть видимым в сборе или в двоичном формате. Кажется, это прямо вперед, чтобы сделать это за 32 с помощью ассемблерные:Как поставить маркеры сборки на код C++ (x64)
__asm {
NOP
NOP
NOP
}
или используя заявление сборки DB:
__asm {
DB 0x00, 0xFF, 0x10
}
Но VisualStudio 2005 и лучше не поддерживает встроенный ассемблер для x64. Есть ли способ сделать это? Вероятно, я могу сделать функцию в отдельном модуле сборки, но как я могу быть уверен, что компоновщик будет помещать фактическую сборку вместо CALL?
Линкер не вводит инструкции 'CALL', он просто помещает в фактический адрес. Компилятор будет помещен в 'CALL' для вашей сборки. Но зачем вам это нужно? Не является ли «ЗВОНОК широко известный адрес» применимым в качестве маркера? – MSalters
Да, это может быть так: найти маркер и его адрес, а затем найти CALL-адреса этого адреса. – ChatCloud
Собственно, это хорошее решение. Существует некоторая взаимосвязанная статья http://www.codereversing.com/blog/?p=69 – ChatCloud