能力值:
( LV4,RANK:50 )
|
-
-
2 楼
编译选项的问题。
检查栈是否溢出,手头没有环境,自己找一下吧。
要不就用naked函数。
看着像Debug版,Release有可能没问题
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
编译选项如何设置?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
调试被注入进程发现注入代码如下:
0B750000 55 push ebp
0B750001 8BEC mov ebp, esp
0B750003 81EC C0000000 sub esp, 0C0
0B750009 53 push ebx
0B75000A 56 push esi
0B75000B 57 push edi
0B75000C 8DBD 40FFFFFF lea edi, dword ptr [ebp-C0]
0B750012 B9 30000000 mov ecx, 30
0B750017 B8 CCCCCCCC mov eax, CCCCCCCC
0B75001C F3:AB rep stos dword ptr es:[edi]
0B75001E 60 pushad
0B75001F B9 A8B8AA22 mov ecx, 20000000
0B750024 B8 F06B4A00 mov eax, 444444
0B750029 FFD0 call eax
0B75002B 61 popad
0B75002C 33C0 xor eax, eax
0B75002E 5F pop edi
0B75002F 5E pop esi
0B750030 5B pop ebx
0B750031 81C4 C0000000 add esp, 0C0
0B750037 3BEC cmp ebp, esp
0B750039 E8 EBE4FFFF call 0B74E529
0B75003E 8BE5 mov esp, ebp
0B750040 5D pop ebp
0B750041 C2 0400 retn 4
发现问题是由于0B750039 E8 EBE4FFFF call 0B74E529这一句造成,把这一句nop掉,能正常运行,百思不得其解的是这一句是如何产生的?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
编选项导致的 编译器产生代码检查溢出之类的
这样试试
__declspec(naked) DWORD WINAPI ThreadFunc(LPVOID lpParam)
{
_asm
{
pushad
mov ecx, 0x20000000
mov eax, 0x00444444
call eax
popad
ret 4
}
}
|
能力值:
(RANK:1130 )
|
-
-
6 楼
VS2005 DEBUG模式编译的吧,把检查缓冲区堆栈选项去掉
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
栈不平衡吧~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢,解决了
|
|
|