首页
社区
课程
招聘
[原创]简单调试器EasyDbg源码
发表于: 2011-5-14 22:25 58442

[原创]简单调试器EasyDbg源码

2011-5-14 22:25
58442
收藏
免费 7
支持
分享
最新回复 (89)
雪    币: 332
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
76
还是不错的,不过还个小问题 为什么每次调试 都提示正在调试另一个进程呢
2012-12-30 00:14
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
77
支持一个!!
2013-4-5 15:33
0
雪    币: 99
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
78
牛人啊,天外天王中王
2013-4-5 16:26
0
雪    币: 645
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
79
感谢大牛分享 好源码
2013-6-17 15:40
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
80
下载  收藏  谢谢
2013-6-17 23:10
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
81
下载,学习。楼主人
2013-6-20 12:36
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
82
下载学习。。
2013-9-27 11:52
0
雪    币: 194
活跃值: (241)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
83
有码有真相,楼主辛苦了。。。。
2013-11-21 16:26
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
84
楼主很强大
2013-11-25 14:49
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
85
mark
2014-1-7 09:39
0
雪    币: 9
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
86
简约而不简单  赞
2014-1-9 00:08
0
雪    币: 37
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
87
感谢楼主分享
2014-6-9 10:12
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
88
路过,来看看
2014-6-9 10:22
0
雪    币: 45
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
89
发现这份代码的一个bug(没有解除文件映射),在xp系统下运行没问题,在win7下回有问题

//映射文件 并检查PE有效性以及是不是EXE文件
BOOL CEasyDbgDlg::MapPEFile()
{
HANDLE hFile=NULL;
//打开文件获得文件句柄
//CreateFile(pFileName, GENERIC_WRITE, 0, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
hFile=CreateFile(m_SzFilePath,GENERIC_ALL,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

if (hFile==INVALID_HANDLE_VALUE)
{
OutputDebugString("EasyDbgDlg.cpp 3424行出错");
DWORD dwErrorCode=0;
dwErrorCode=GetLastError();
//输出错误信息
GetErrorMessage(dwErrorCode);

return FALSE;
}
HANDLE hFileMap=NULL;
//创建文件映射
hFileMap=CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,0,NULL);
if (hFileMap==NULL)
{
OutputDebugString("EasyDbgDlg.cpp 3437行出错");
DWORD dwErrorCode=0;
dwErrorCode=GetLastError();
GetErrorMessage(dwErrorCode);
CloseHandle(hFile);
return FALSE;
}
//映射文件
// pFile=(char*)MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0);
LPVOID lpImageBase = MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0);
if (lpImageBase==NULL)
{
OutputDebugString("EasyDbgDlg.cpp 3448行出错");
DWORD dwErrorCode=0;
dwErrorCode=GetLastError();
GetErrorMessage(dwErrorCode);

CloseHandle(hFile);
CloseHandle(hFileMap);
return FALSE;
}

//判断PE有效性
PIMAGE_DOS_HEADER pDos=NULL;
pDos=(PIMAGE_DOS_HEADER)lpImageBase;
PIMAGE_NT_HEADERS pNt=(PIMAGE_NT_HEADERS)((BYTE*)lpImageBase+pDos->e_lfanew);

//检查MZ PE 两个标志
if (pDos->e_magic!=IMAGE_DOS_SIGNATURE || pNt->Signature!=IMAGE_NT_SIGNATURE)
{
AfxMessageBox("不是有效的PE文件");
CloseHandle(hFile);
CloseHandle(hFileMap);
UnmapViewOfFile(lpImageBase);
return FALSE;
}
if (pNt->FileHeader.Characteristics&IMAGE_FILE_DLL)
{
AfxMessageBox("该文件是DLL,EXE文件");
CloseHandle(hFile);
CloseHandle(hFileMap);
UnmapViewOfFile(lpImageBase);
return FALSE;
}


CloseHandle(hFile);
CloseHandle(hFileMap);
UnmapViewOfFile(lpImageBase);
return TRUE;

}
2014-6-15 21:53
0
雪    币: 48
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
90
非常感谢,很想给一个“致谢”,但是没看到致谢按钮,郁闷中……
2014-7-9 11:00
0
游客
登录 | 注册 方可回帖
返回
//