首页
社区
课程
招聘
[旧帖] [求助][求助]关于修改OEP 0.00雪花
发表于: 2012-2-12 09:56 2081

[旧帖] [求助][求助]关于修改OEP 0.00雪花

2012-2-12 09:56
2081
最近在写一个关于修改OEP的程序,但是写成后发现每每运行到
void MPE::GetEntryPoint()
{
  AddressOfEntryPoint = pImageOptionalHeader->AddressOfEntryPoint;
}
时总是出现错误,错误提示是“Unhandled exception at 0x012f28cc in Shell.exe: 0xC0000005: Access violation reading location 0xccccccdc.”。不知道是什么原因,不得已之下在这里发帖求助

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
pImageOptionalHeader看起来是这个变量未初始化.
或者你应该写成AddressOfEntryPoint = this->OptionalHeader->AddressOfEntryPoint;
2012-2-12 10:45
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
还是不行,修改后错误提示变成了“Unhandled exception at 0x008e28cc in Shell.exe: 0xC0000005: Access violation reading location 0xccccccdc.”。
还有楼上的 "this->pOptionalHeader->AddressOfEntryPoint"应该是“ this->pImageOptionalHeader->AddressOfEntryPoint;”,要不然编译时出错。
2012-2-12 11:08
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
菜鸟能帮我看下我的问题吗
2012-2-12 11:11
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
刚注意到vs2010中还有如下提示:
                Magic        CXX0030: Error: expression cannot be evaluated       
                MajorLinkerVersion        CXX0030: Error: expression cannot be evaluated       
                MinorLinkerVersion        CXX0030: Error: expression cannot be evaluated       
                SizeOfCode        CXX0030: Error: expression cannot be evaluated       
                SizeOfInitializedData        CXX0030: Error: expression cannot be evaluated       
                SizeOfUninitializedData        CXX0030: Error: expression cannot be evaluated       
                AddressOfEntryPoint        CXX0030: Error: expression cannot be evaluated       
                BaseOfCode        CXX0030: Error: expression cannot be evaluated       
                BaseOfData        CXX0030: Error: expression cannot be evaluated       
                ImageBase        CXX0030: Error: expression cannot be evaluated       
                SectionAlignment        CXX0030: Error: expression cannot be evaluated       
                FileAlignment        CXX0030: Error: expression cannot be evaluated       
                MajorOperatingSystemVersion        CXX0030: Error: expression cannot be evaluated       
                MinorOperatingSystemVersion        CXX0030: Error: expression cannot be evaluated       
                MajorImageVersion        CXX0030: Error: expression cannot be evaluated       
                MinorImageVersion        CXX0030: Error: expression cannot be evaluated       
                MajorSubsystemVersion        CXX0030: Error: expression cannot be evaluated       
                MinorSubsystemVersion        CXX0030: Error: expression cannot be evaluated       
                Win32VersionValue        CXX0030: Error: expression cannot be evaluated       
                SizeOfImage        CXX0030: Error: expression cannot be evaluated       
                SizeOfHeaders        CXX0030: Error: expression cannot be evaluated       
                CheckSum        CXX0030: Error: expression cannot be evaluated       
                Subsystem        CXX0030: Error: expression cannot be evaluated       
                DllCharacteristics        CXX0030: Error: expression cannot be evaluated       
                SizeOfStackReserve        CXX0030: Error: expression cannot be evaluated       
                SizeOfStackCommit        CXX0030: Error: expression cannot be evaluated       
                SizeOfHeapReserve        CXX0030: Error: expression cannot be evaluated       
                SizeOfHeapCommit        CXX0030: Error: expression cannot be evaluated       
                LoaderFlags        CXX0030: Error: expression cannot be evaluated       
                NumberOfRvaAndSizes        CXX0030: Error: expression cannot be evaluated
2012-2-12 11:18
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看楼主那样子应该是MPE的this指针是错的。

怀疑他哪里用了错误的强制转换。

如果MPE是从MFC类继承的话他可能在某个消息映射处写错了。

不过也可能是pImageOptionalHeader指针没有初始化
2012-2-13 01:04
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
现在把源码附上,有兴趣的可以看一下,修改完成后会另发一主题。本想把整个工程传上来,可是不知怎么的总传不上来,是不是因为文件太大(30M左右),知道的说一下
上传的附件:
2012-2-14 14:16
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
问题有进展,好像确实是指针初始化的问题,正在进一步调试中
2012-2-14 20:34
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
就不另开一帖了,在此献上源码。此小程序仅能修改入口点,高手飘过~
上传的附件:
2012-2-19 21:34
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢楼主无私分享~~

请问像你那样把项目文件vcxproject和解决方案文件sln放在同一个目录的情况该怎么设置~
2012-2-19 22:33
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
话说你那个,加密之后文件无法运行了啊。。

我迟点再看代码。。

话说明天还有个java的笔试。。算了今晚就看看C++的东西吧
2012-2-19 22:36
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
ChangedEntryPoint = AddressOfEntryPoint + 10000;

我汗。。。楼主你。。。

其实你应该那啥么嘛。。自己搞一段代码啊。

之前我也有弄一个类似的。

http://codepad.org/TQOC3CQ2

不过没做完。
我不想用汇编做自定位代码,也不想用SEH因为MinGW不支持。
所以现在想要解决函数导入的唯一方法(我没想出其他方案)就是构造一个新的IAT,
来解决LoadLibrary和GetProcAddress两个函数。
当然如果导入表里有kernel.exe的话其实可以直接去那里解析PE头来找的。。。

嗯,之前居然没想到。。还在考虑要兼容不导入LoadLibrary和GetProcAddress两个函数的程序

现在想想,只需要放弃兼容那些没有kernel32.dll的导入的程序,那么我的代码就可以优雅很多。。

楼主给了我新的灵感!
2012-2-19 23:27
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
话说我也不清楚,vs2010直接就放在同一个目录里了
2012-2-20 09:58
0
雪    币: 139
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
哎,没办法,现在我的水平也就这样,等以后有所提高后或许会另写一个好点的加密程序
2012-2-20 10:00
0
游客
登录 | 注册 方可回帖
返回
//