首页
社区
课程
招聘
[旧帖] [求助]不是有效的win32应用程序 0.00雪花
发表于: 2008-3-18 16:43 18248

[旧帖] [求助]不是有效的win32应用程序 0.00雪花

2008-3-18 16:43
18248
脱了ASProtect壳修复IAT后,在补区段前,还可以运行,就是直接出错,这还正常;
但是补了区段后,就提示“不是有效的win32应用程序”,是不是我把PE头破坏了?
但是我用LordPE进行PE编辑感觉也挺正常的啊,重建PE它也提示成功,只是运行就提示“不是有效的win32应用程序”
本人第一次尝试补区段,可能有什么东西误解了,高人可否解惑,如何解决“不是有效的win32应用程序”?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
2
在补区段前

补区段需要修改节表数目,内存镜像大小,添加节表,但最重要的还得添加区段内容啊
直接用lordpe添加,修改的是pe文件头,不会实际添加区段,用其它的16进制编辑工具把区段添加上去才行
最好用PeADD等工具添加区段
2008-3-18 17:02
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
总算有人回我帖了,感谢
区段我已经通过内存断点抓出来了,然后是用LordPE的PE编辑器->区段->右键选从磁盘载入段->在新载入的段上面右键选编辑区段->修改虚拟地址。
修改后,文件从768K增大到1.10M,我想应该已经加进去了吧?
而且如果只是缺少区段,也应该是能运行但出错才是吧?如果PE头正常有没有其他可能会出现“不是有效的win32应用程序”呢?或者是这一定是PE头被破坏了?
2008-3-18 17:14
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
4
看下各段长度,区段数,各区段RVA是否正确
2008-3-18 17:46
0
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
5
这么小的文件如果方便的话可以传到论坛上来 让大家看看的
2008-3-18 20:19
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
各段长度应该是正确的吧?PE编辑器显示的虚拟长度和真实长度是一致的,这个没改,我只是把虚拟地址改了一下,改到这个区段应该在的位置。执行步骤基本上根据这个来的:http://bbs.pediy.com/showthread.php?t=37376这篇《ASProtect 2.3 SKE build 06.26 Beta [Extract]脱壳笔记 》。

那个exe是一个游戏的exe,我是拿它来学习脱壳的,似乎它只是简单的调用了另外一个扩展名为dll的exe文件。我晚上回去试试,看看能不能把这个exe单独拿出来调试。先谢谢LS了。
2008-3-19 10:46
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
又测试了一下,似乎是PE镜像大小的数值不对的缘故。
比如刚脱壳后能运行但出错的exe,PE显示的镜像大小是C0000字节,如果把它改称B0000或者D0000也都会提示“不是有效的win32应用程序”。
我试着加了一个段,此段原地址是00DA0000,大小为9000,补进去后,直接运行也是“不是有效的win32应用程序”,但是把镜像大小改为C9000后,就可以运行了(别笑我,我菜)。但是现在这个段的地址不对,它的虚拟地址应该是009A0000,修改虚拟地址后,又出现“不是有效的win32应用程序”,即使把镜像大小改成9A9000,还是同样的提示。
是不是真是修改镜像大小后就可以了?如果是的话,应该改成多少?
2008-3-19 21:24
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
试出来了,原来是填虚拟后的大小,然后再重建PE一下就可以了。不过重建后的好象各个段都被压缩了一点点,不知道对脱壳的最后一步有没有影响。至今搞不懂那篇脱壳的最后几句汇编指令是怎么来的,继续研究研究。
多谢上面几位解答,如果可以在解释一下http://bbs.pediy.com/showthread.php?t=37376这篇最后的几句汇编的来历,感激不尽。
2008-3-19 22:29
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
终于让我脱掉了,开心
不过最后一个步骤,汇编代码替换的原理还是不明白,只是简单的搜索替换就可以了用了。
而实际上我调试的时候,出异常的地方与替换处相去甚远,真不知是用什么方法找出来的?难道是在GetCurrentProcessId里面设断点?
不知道LS几位高手可以指点一下么
2008-3-19 23:50
0
游客
登录 | 注册 方可回帖
返回