首页
社区
课程
招聘
[旧帖] [讨论][WM] Hook CreateFile 的问题 0.00雪花
发表于: 2009-10-27 10:44 1537

[旧帖] [讨论][WM] Hook CreateFile 的问题 0.00雪花

2009-10-27 10:44
1537
以前曾经碰到一个问题,在hook了CreateFile以后,在MyCreateFile里面不能调用Sleep或者WaitForSingleObject之类,一调用,系统就挂起了。
有大侠知道具体原因吗?请指教,谢谢!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
char * TargetString = "SomeString";
DWORD  dwRetAddr;

__declspec(naked) VOID Fake_WriteFile(VOID)
{
	__asm
	{
		MOV   EAX, [ESP+8] // Buffer
		MOV   EDX, [ESP]
		PUSHAD //Save Registers
		PUSH  TargetString//"error:debugger finded"
		PUSH  EAX   // Buffer
		CALL  DWORD PTR[StrStrA]

		TEST  EAX,  EAX
		JZ    NEXT

BEGIN: //Sleep forever
		PUSH  10000  //10s
		CALL  DWORD PTR[Sleep]
		JMP   BEGIN

NEXT:
		POPAD  
		PUSH  0x18
		PUSH  0x7C810E30
		JMP   DWORD PTR[dwRetAddr]
			
	}
}

BOOL StartHook(VOID)
{
	BYTE JmpCode[] = {0xE9, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90};
	DWORD dwWrite, tmp;
	DWORD dwWriteFile = (DWORD)GetProcAddress (LoadLibrary("kernel32.dll"), "WriteFile");
	if (0 == dwWriteFile)
	{
		OutputDebugString("dwWriteFile = 0");
		return FALSE;
	}
	dwRetAddr = dwWriteFile + 7;
	tmp =(DWORD)Fake_WriteFile - dwWriteFile - 5;
	memcpy (JmpCode+1, &tmp, 4);
	if (!WriteProcessMemory ((HANDLE)-1, (PVOID)dwWriteFile, JmpCode, sizeof(JmpCode), &dwWrite))
	{
		OutputDebugString("hook error: writememory error");
		return FALSE;
	}
	OutputDebugString("hook ok");
	return TRUE;
}

2009-10-27 12:12
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢 exile 的回复。不过我说的是Windows mobile的问题,抱歉没说清楚。
2009-10-28 10:21
0
游客
登录 | 注册 方可回帖
返回
//