0
我有以下C++ ASM內聯如何在ASM中使用struct成員?
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
然後我想更換相同[ESI + 0x77C]的值與myJohn.A
爲什麼你需要處理DS? –
那麼4個字節的值被存儲在內存中,並且在ESI改變之前,ESI每秒都會改變爲一個新值,我必須將ESI + 0x77C的值替換爲我自己的值...並存儲舊值以供參考。如果你感興趣的測試()函數被綁在被調用的目標 – SSpoke
目標一小補丁我不知道它爲什麼DS ..多數民衆贊成在我想修補寄存器爲不同的價值之前是如何。它的工作原理..如果我只是代替myJohn.A就像'12345'一樣,而不是完美地應用這些更改。如果任何人都可以告訴我如何在不使用結構的情況下執行此操作,例如只使用int oldA = 0;'int A = 0;'這也是有用的..對我無關緊要。多一點對我來說打包/整理者 – SSpoke