
#include "windows.h" #include "tchar.h" int _tmain(int argc, TCHAR* argv[]) { MessageBox(NULL, L"Hello, World!", L"Hello, World!", MB_OK); } 76F1A942 | 8B4C24 54 | mov ecx,dword ptr ss:[esp+54] | 76F1A946 | 33CC | xor ecx,esp | 第一行执行完没执行第二行,而是跳到了这里,mov 指令为什么会跳转?
775B91C0 | 833D E81467 | cmp dword ptr ds:[776714E8],0 | 1 xuld 2024-08-18 13:06:33 +08:00 因为单词皮错了 |
3 weiwoxinyou 2024-08-18 13:23:31 +08:00 代码和描述的抽象程度和标题的 mian 函数不相上下 |
4 dearmymy 2024-08-18 13:29:17 +08:00 因为你调试得是汇编代码。 |
6 rb6221 2024-08-18 13:36:13 +08:00 一看标题我就明白了 |
7 masteryi OP 还有个类似的问题 我打开 od 代码停在 775F88B8 按下 f7(step into)为什么没跳到 775F88C1 而是跳到了别处 775F88B8 | EB 07 | jmp ntdll.775F88C1 | 775F88BA | 33C0 | xor eax,eax | 775F88BC | 40 | inc eax | 775F88BD | C3 | ret | 775F88BE | 8B65 E8 | mov esp,dword ptr ss:[ebp-18] | 775F88C1 | C745 FC FEFFFFFF | mov dword ptr ss:[ebp-4],FFFFFFFE | |
8 icy37785 2024-08-18 13:47:33 +08:00 via iPhone 一肚子吐槽不知道从哪里开始吐 |
9 sslyd 2024-08-18 13:55:31 +08:00 这是用了 ss 段寄存器吧。你得去查 ss 段选择子才知道他为啥跳转的。这是操作系统的代码吧 |
10 mxT52CRuqR6o5 2024-08-18 18:43:17 +08:00 可以尝试不要使用单步调试功能,而是在下一行下一个硬件断点然后 F9 ,你可以看看 ollydbg 断点是靠 int3 中断实现的,某些情况下会跑飞很正常(很多反调试工具都会实现这种效果) |
11 leon0318 2024-08-18 19:41:10 +08:00 via iPhone 一个标题,一共两个单词,全都写错? |
12 HongJay 2024-08-19 00:23:31 +08:00 我服了 |
14 126ium 2024-08-19 07:44:11 +08:00 via Android 干我们这行讲究一个仔细认真。像 op 这种毛毛躁躁的应该早日考虑转行 |
15 dilrvvr 2024-08-19 09:34:15 +08:00 via iPhone #define mian main #define ture true #define flase false #difine viod void |
16 dilrvvr 2024-08-19 09:37:01 +08:00 via iPhone 拷贝来的,结果最后一个还拼成了 difine… 没救了 |