首页
社区
课程
招聘
[求助]自己做的加密函数导入表,少部分程序只在Ollydbg等调试器下正常运行,高手帮着分析一下为什么?
发表于: 2009-1-14 11:40 10537

[求助]自己做的加密函数导入表,少部分程序只在Ollydbg等调试器下正常运行,高手帮着分析一下为什么?

2009-1-14 11:40
10537

为编写自己的多进程加密壳(类似Shell,内存执行EXE技术),首先考虑如何变异PE文件,目前常用的方法是劫持输入函数,为此自己编写了一个清除导入函数的处理工具,即经过本程序处理的 EXE文件的导入函数没有了(隐藏了,你看到的导入表是假的),导入函数被自己的函数所劫持,象 msvcrt.dll 中的 _acmdln 函数则进行特殊处理,问题是:部分EXE文件不能独自运行,在Ollydbg等调试器下正常,这样我也无法调试-发现问题,请求“隐居”的各位高人,如何解决这问题?
比如win2003中的 notepad.exe,我处理后为 notepad_JmImp.exe,为什么notepad_JmImp.exe在Ollydbg等调试器下一切正常,系统下运行不正常?你能解答我的疑问么?先谢了!!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (18)
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
2
老大能帮着看看么?谢谢了!
这确实是个苦差事,没有几年的苦心修炼估计解决不了这问题....
只能等待“靖哥哥”了...
2009-1-15 12:36
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
在我的OD里跑不起来
2009-1-15 15:05
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
4
我自己下载运行正常,没问题,你忽略 INT1、INT3 再试试, 里边包含了部分反跟踪及花指令代码,好像我已经屏蔽了,检测有问题也会正常执行的,你那里出现什么状况?
我使用OD、Windbg都能正常运行,有其他人试过么?
2009-1-16 11:39
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
我直接跑能跑
win2000
2009-1-16 11:49
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
6
谢谢sessiondiy,确实在2K下能正常运行,但在XP、2003下都是必须由OD启动才能正常,哎,有些搞不懂了,也许是某个API函数的问题?!!到底是哪个API???
2009-1-16 12:06
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
7
咱们顺着这条路摸索一下吧,估计能成功....
2009-1-16 12:08
0
雪    币: 29249
活跃值: (7769)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
8
010131C3    CD 2D           int     2D

010131C3   90 90          nop
2009-1-16 12:36
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
9
风间仁 兄厉害 ,能说明原因么?
为什么有些程序被同样处理后能够正常执行?且此处使用的是 INT 2D 检测调试器的方法,SEH 设定问题?
2009-1-16 13:12
0
雪    币: 29249
活跃值: (7769)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
10
有些正常运行没触发异常
2009-1-16 13:55
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
11
风间仁 兄, 如何修改能够在WinXp、2003下正确使用 INT 2D 检测 ?
估计你早已解决困扰、彻底解决这问题了,哈哈
2009-1-16 14:05
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
12
加壳不能跑是因为你没将  Callbacks(LoadConfig) 清 0
2009-1-16 15:35
0
雪    币: 29249
活跃值: (7769)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
13
学习

记录一下。。http://eparg.spaces.live.com/blog/cns!59BFC22C0E7E1A76!712.entry
2009-1-16 15:59
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
14
sessiondiy 及 风间仁 两位老兄的方法我都试了,取消任何一个都能成功跑起来,但表面看起来却完全是两个互不相干的办法,我还是很迷惑其中的缘由!!向你们致敬!
系统中的这些文件都是安装时被系统绑定的程序,我只是找回绑定函数,并清除其中的某些设定,没有感觉“加载配置”会有如此影响。。。学习ing。。。
2009-1-16 17:14
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
15
你欲用 LoadConfigs 处理SEH, 可是你的壳(甚至有些壳)郤没针对这项来处理

我猜你的壳对于AntiDebugger用了2个 SEH,
一个是 int 2D 在用的, 一个是单步在用的

依你的范例来看, 你的
LoadConfigs RVA = 000018C8h (PhysOff=0CC8)
LoadConfigs+40h 记录着 01001940h (PhysOff=0D40)
LoadConfigs+44h 记录着 00000001h

你应将 VA=01001940h, 亦即 PhysOff=0D40 开始处, 填入 SEH 的 RVA:
000131DAh ' 000013247h 这二个值 (图的2'3)
这里要特别注意的是得由小排到大 (OS认定你已排序好了)

而 LoadConfig+44h 的 00000001 要改为 00000002 (图的1)

操作系统对这LoadConfigs有任何检查不通过的话, 会直接结束程序.
(Win2000不管这项)

附上我改好的.

修改前

修改后
上传的附件:
2009-1-17 01:11
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
16
上面是本, 看看就好.
至于你的壳, 你应该是不管这LoadConfigs, 而刚好记事本有用到,
而你加壳后没清除. 所以你直接清为 0 即可. 因为没人搞这么麻烦的.

风间仁兄将INT 2D nop掉也可以, 没例外. 能跑.
2009-1-17 01:25
0
雪    币: 29249
活跃值: (7769)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
17
NOP不治本。清LoadConfig才是王道
2009-1-17 02:59
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gxz
18
是的,太感谢您们了,我已根据您们的意见修改好,目前在Win98、Xp、2000、2003下基本正常,还没有发现其他异常(包括被绑定后的 EXE)!
这样,打开 Anti-Debug 代码,基本上自己的壳就算完成了,再次感谢 sessiondiy 及 风间仁 两位老兄!!
2009-1-19 11:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
新手,不知道什么意思啊。。。
2009-1-19 21:58
0
游客
登录 | 注册 方可回帖
返回
//