VC如何获得PE文件的入口点???

xiaodongzuo 2008-06-06 11:47:23
VC如何获得PE文件的入口点???
各位大侠,请赐教! 在线等待...
...全文
304 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jesterjy 2008-06-07
  • 打赏
  • 举报
回复
有注释的。哈哈!


DWORD signature;
IMAGE_FILE_HEADER _head;
IMAGE_OPTIONAL_HEADER opt_head;
IMAGE_SECTION_HEADER section_header;

HANDLE hFile;
HANDLE hMapping;
void *basepointer;

// 打开文件.
if ((hFile = CreateFile(szFileName, GENERIC_READ,
FILE_SHARE_READ,0,OPEN_EXISTING,
FILE_FLAG_SEQUENTIAL_SCAN,0)) == INVALID_HANDLE_VALUE)
{
MessageBox("can't open file");
return FALSE;
}

// 创建内存映射文件.
if (!(hMapping = CreateFileMapping(hFile,0,PAGE_READONLY|SEC_COMMIT,0,0,0)))
{
MessageBox("mapping failed");
CloseHandle(hFile);
return FALSE;
}

// 把文件头映象存入baseointer.
if (!(basepointer = MapViewOfFile(hMapping,FILE_MAP_READ,0,0,0)))
{
MessageBox("view failed");
CloseHandle(hMapping);
CloseHandle(hFile);
return FALSE;
}
IMAGE_DOS_HEADER * dos_head =(IMAGE_DOS_HEADER *)basepointer;

// 得到PE文件头.
_head = (IMAGE_FILE_HEADER *)((char *)dos_head + dos_head->e_lfanew);

// 得到OEP地址.
DWORD dwOEP=header->opt_head.AddressOfEntryPoint;

// 清除内存映射和关闭文件.
UnmapViewOfFile(basepointer);
CloseHandle(hMapping);
CloseHandle(hFile);
孤客天涯 2008-06-06
  • 打赏
  • 举报
回复
樓主在研究病毒?
孤客天涯 2008-06-06
  • 打赏
  • 举报
回复
if(file.Open(csFilename,CFile::modeReadWrite|CFile::shareDenyRead))
{
file.SeekToBegin();
file.Read(&dosHeader,sizeof(IMAGE_DOS_HEADER));
file.Seek(dosHeader.e_lfanew,CFile::begin);
file.Read(&ntHeader,sizeof(IMAGE_NT_HEADERS));

//记录原来的入口地址等
dwitImageBase = ntHeader.OptionalHeader.ImageBase ;
dwitImageEntryPoint = ntHeader.OptionalHeader.AddressOfEntryPoint;//入口地址
dwitImportTableEntryPoint = ntHeader.OptionalHeader.DataDirectory[1].VirtualAddress ;
zhengq06 2008-06-06
  • 打赏
  • 举报
回复
观注, 正好也在学习这个.
cnzdgs 2008-06-06
  • 打赏
  • 举报
回复
GetModuleHandle返回的HMODULE就是程序的可执行文件装入内存的开始地址。
OllyDBG最新OllyDBG2008.1.1
1.LOCKLOSE添加了部分API和结构体信息:
 1)添加了一些API的识别;
 2)添加到290个结构体&枚举类型;
 3)添加到2504个API函数结构;
 4)包含了部分VB常见函数,部分VC函数,包含部分MSVCRT.DLL函数;
2.修正部分bug


OllyICE.exe 是在cao_cong汉化第二版基础上修改的。
OLLYDBG.EXE 英文修改版,修改的地方与OllyICE.exe一样

注:OllyICE.exe(cao_cong汉化版)配制文件Ollydbg.ini完全英文化,因此中英文版本的OllyDBG可以很好地共用一个配置文件
OllyICE这个名称来自forgot的OLLYDBG修改本。

OllyICE.EXE与OLLYDBG.EXE同时做了如下修改:
1.窗口、类名等常见修改;
2.格式化字符串的漏洞[OutPutDebugString]补丁;
3.参考dyk158的ODbyDYK v1.10 ,自动配置UDD、PLUGIN为绝对路径;
4.参考nbw的"OD复制BUG分析和修正"一文,修正从内存区复制数据时,有时无法将所有的数据都复制到剪贴板的bug。
5.参考ohuangkeo“不被OD分析原因之一和修补方法”,稍改进了OD识别PE格式能力(可能仍报是非PE文件,但己可调试了)。
6.修正OllyScript.dll插件bpwm命令内存读写都中断的问题。
7.jingulong的Loaddll.exe,可以方便让OllDbg中断在dll的入口
8.感谢DarkBul告知SHIFT+F2条件窗口显示的bug及修复。
9.感谢dreaman修复Findlabel,Findname,Findnextname三个函数处理字符串会溢出的bug。
10.改善sprintf函数显示某些浮数会崩溃的bug,这里的修复代码直接引用heXer的代码。
11.该修改版,配合HideOD插件,可以很好地隐藏OD。
12.新增实用的快捷键功能
13.修正Themida v1.9.x.x检测OllyICE的Anti,配合HideToolz即可调试Themida v1.9.x.x加壳程序。
14.LOCKLOSE添加了部分API和结构体信息。
2008.1.1
1.LOCKLOSE添加了部分API和结构体信息:
 1)添加了一些API的识别;
 2)添加到290个结构体&枚举类型;
 3)添加到2504个API函数结构;
 4)包含了部分VB常见函数,部分VC函数,包含部分MSVCRT.DLL函数;
2.修正部分bug


OllyICE.exe 是在cao_cong汉化第二版基础上修改的。
OLLYDBG.EXE 英文修改版,修改的地方与OllyICE.exe一样

注:OllyICE.exe(cao_cong汉化版)配制文件Ollydbg.ini完全英文化,因此中英文版本的OllyDBG可以很好地共用一个配置文件
OllyICE这个名称来自forgot的OLLYDBG修改本。

OllyICE.EXE与OLLYDBG.EXE同时做了如下修改:
1.窗口、类名等常见修改;
2.格式化字符串的漏洞[OutPutDebugString]补丁;
3.参考dyk158的ODbyDYK v1.10 ,自动配置UDD、PLUGIN为绝对路径;
4.参考nbw的"OD复制BUG分析和修正"一文,修正从内存区复制数据时,有时无法将所有的数据都复制到剪贴板的bug。
5.参考ohuangkeo“不被OD分析原因之一和修补方法”,稍改进了OD识别PE格式能力(可能仍报是非PE文件,但己可调试了)。
6.修正OllyScript.dll插件bpwm命令内存读写都中断的问题。
7.jingulong的Loaddll.exe,可以方便让OllDbg中断在dll的入口
8.感谢DarkBul告知SHIFT+F2条件窗口显示的bug及修复。
9.感谢dreaman修复Findlabel,Findname,Findnextname三个函数处理字符串会溢出的bug。
10.改善sprintf函数显示某些浮数会崩溃的bug,这里的修复代码直接引用heXer的代码。
11.该修改版,配合HideOD插件,可以很好地隐藏OD。
12.新增实用的快捷键功能
13.修正Themida v1.9.x.x检测OllyICE的Anti,配合HideToolz即可调试Themida v1.9.x.x加壳程序。
14.LOCKLOSE添加了部分API和结构体信息。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧