У меня есть следующиеC++ ASM Inline как использовать члены структуры в ASM?
struct john {
int oldA;
int A;
} myJohn;
DWORD gotoAddressBack = 0x00401000;
void __declspec(naked) test(void) {
__asm {
MOV myJohn.oldA, DWORD PTR DS:[ESI+0x77C]
MOV DWORD PTR DS:[ESI+0x77C], myJohn.A
JMP gotoAddressBack
}
}
Вы можете сказать, что оба MOV Сгенерируют error C2415: improper operand type.
Как вы можете видеть, что я хочу сделать, это магазин [+ ESI 0x77C] значение в myJohn.oldA
'sТогда я хочу, чтобы заменить один и тот же [ESI + 0x77C] s значение с myJohn.A
Почему вам приходится иметь дело с DS? –
Ну, значение 4 байта хранится в памяти, и 'ESI' постоянно меняет каждую секунду на новое значение, перед изменением ESI я должен заменить местоположение значения ESI + 0x77C своим собственным ... и сохранить старое значение для справочных целей , Если вам интересно, функция test() привязана к вызову небольшим патчем в цель – SSpoke
Я не знаю, почему это DS .. вот как это было до того, как я захотел исправить регистр на другое значение. Это работает. Если я просто вместо myJohn.A поставил, как '12345', вместо этого он применил бы изменения отлично. Если кто-нибудь может сказать мне, как это сделать без структур .. например, просто используя 'int oldA = 0;' 'int A = 0;', что также было бы полезно .. для меня не имеет значения .. просто структура немного больше упакованных/аккуратных для меня – SSpoke