能力值:
( LV7,RANK:140 )
2 楼
不知所云。如果是想代码里某个地方不出现call的话,可以考虑手动修改为push/ret
能力值:
( LV2,RANK:10 )
3 楼
When compiling with /clr, a function containing __debugbreak will be compiled to MSIL. asm int 3 causes a function to be compiled to native. For more information, see __asm
For example:
main() {
__debugbreak();
}
is similar to:
main() {
__asm {
int 3
}
}
719K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7$3c8F1i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6h3&6Q4x3X3c8#2M7#2)9J5c8X3I4A6j5Y4u0S2M7Y4W2Q4x3V1k6X3y4o6l9^5j5U0c8W2N6q4)9J5k6h3q4K6M7s2R3`.
搜一遍msdn再来提问
能力值:
( LV2,RANK:10 )
4 楼
补充一下. 64位程序+汇编的问题。同一个代码中,两个汇编调用形式不一样。源代码:
MyAsmFun PROC
mov rax , rcx
jmp rax
MyAsmFun ENDP
extern "C" void MyAsmFun (ULONG64 val);//asm编译成lib,导入工程。
void AA()
{ __debugbreak(); MyAsmFun(123);
}
IDA查看汇编结果: int 3
call MyAsmFun
自己那个汇编调用是call这种形式,__debugbreak直接是汇编码 int 3.
我不想要call这种,怎么处理?
是不是还要添加关键字或编译选项之类的?
请各路神仙加持
能力值:
( LV2,RANK:10 )
5 楼
yeyeshun
不知所云。如果是想代码里某个地方不出现call的话,可以考虑手动修改为push/ret
不是32位程序
能力值:
( LV3,RANK:30 )
6 楼
wem
不是32位程序
明显做不到__debugbreak(); 就不是普通函数,这个是编译器预制的标记,看到这个就替换成Int3。
能力值:
( LV7,RANK:140 )
7 楼
wem
不是32位程序
64位也有push/ret