首页
社区
课程
招聘
谈谈易语言程序的结构、封装原理及安全性
发表于: 2006-3-13 10:57 13045

谈谈易语言程序的结构、封装原理及安全性

2006-3-13 10:57
13045

首先需要说明的是易语言目标代码的封装模式。易语言编译器生成的目标代码是基于IA构架x86CPU下的,所以只能在x86平台下进行移植。为了提高程序的可移植性,目标代码被封装在一个被称作“易格式”的构架内。易语言所有的操作系统平台移植版本都是基于“易格式”进行的。因此,在目前的版本中,易语言只能在x86平台的操作系统间进行移植。由于“易格式”是不能被操作系统的loader识别的,所以需要对“易格式”进行再次封装,以便系统的loader加载。在windows下的作法是,生成一个标准的PE可执行程序作为外壳,把“易格式”封装在其中。在这里,这个标准的PE程序就成为了“易格式”的loader。其实如果说得更准确一点的话,这个PE程序并不是“易格式”的loader,而是核心支持库的loader。它装载核心支持库,并把“易格式”的基址传给核心支持库,由核心支持库进行“易格式”的加载和各种服务的初始化。所以“易格式”真正的加载器是核心支持库,这也是为什么所有易语言版本都必须包含核心支持库的原因。由于这个PE程序壳是由VC开发或者是有和VC开发的程序类似的入口点,所以易语言编译的程序会被PEID之类的程序识别为“Microsoft Visual C++ 6.0 ”。而易语言编译后的程序的真正的入口点是在易格式中,而不是PE文件的入口点。

在把“易格式”封装为PE文件的时候,具体的方法是把“易格式”作为一个节(参见网上的PE文件格式教程)保存在PE文件中,即“.ecode”节。这个节是独立于PE文件入口点所在的节的。所以PEID认为这个节中的数据不是标准的可执行代码,即“Overlay”。现在部分加壳程序会对各个节进行处理,同时为了防止被dump,在程序加载完成的时候,其实代码还是没有被全部显现出来,所以导致核心支持库加载“易格式”失败。在使用加壳程序的时候,必须选中“保留附加数据”就是为此。这只是由于壳的作者对易语言了解不多,没有对此进行处理的缘故。随着易语言的不断推广,这种情况必然会得到改善。

至于有些朋友说的易语言的代码操作“是在程序领空中进行的,会使程序完全暴露在解密者面前”。这个不光是易语言如此,其他任何编译器编译出的原生代码大都如此。除了解释类型的程序或特殊设计的代码外,代码不在自己的领空中运行,还能跑到别的进程的领空里运行?这和所谓易语言的“安全性”没有什么关系。“程序完全暴露在解密者面前”,只能说这个程序的作者在反破解方面的技术不够。通过一些手段,就可以最大限度的避免这种情况的发生。


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

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
只能学习
2006-3-13 11:03
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
3
易语言扫盲先锋
2006-3-13 11:53
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习
2006-3-13 11:55
0
雪    币: 191
活跃值: (205)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
学习中。。。
2006-3-13 12:52
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
因为其封装性,使的加壳软件处理时,只处理了其loader,结果导致脱壳的方便。
2006-3-13 13:17
0
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
7
“程序完全暴露在解密者面前”,只能说这个程序的作者在反破解方面的技术不够。通过一些手段,就可以最大限度的避免这种情况的发生。

1 比如什么手段?

2 请问楼主您的下一个版本的 ECE 是否打算支持对 E 语言的 EXE 支持资源编辑呢?例如象 eXeScope 编辑普通 EXE 那样?

3 如何把 krnln.fne 库导入到 OD 的 LIB 库中。就象复制 MFC42.Lib mfc71.Lib 到 OD 目录中使 OD 支持显示 MFC 的符号显示?
其实就是如何在 OD 中符号修饰来提高代码的可读性。
上传的附件:
2006-3-13 22:05
0
雪    币: 1223
活跃值: (469)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
8
最初由 RegKiller 发布
“程序完全暴露在解密者面前”,只能说这个程序的作者在反破解方面的技术不够。通过一些手段,就可以最大限度的避免这种情况的发生。

1 比如什么手段?

2 请问楼主您的下一个版本的 ECE 是否打算支持对 E 语言的 EXE 支持资源编辑呢?例如象 eXeScope 编辑普通 EXE 那样?
........

1。最简单的,花指令……
2。EcE是以静态调试为设计目标的软件,自然以调试功能为先。目前的资源分析功能已经比较完善,如果时间允许的话,可能会在两个版本内逐步支持资源编辑功能。下个版本将会开放PlugIn功能,这样也可以通过自行编写插件实现资源编辑。
3。krnln.fne不是包含调试信息的lib文件,不能被OD加载。

请问一下,最后的那张帖图显示的错误是什么情况下发生的?
2006-3-13 23:08
0
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
9
3。krnln.fne不是包含调试信息的lib文件,不能被OD加载。

那么能不能象DEDE那样把分析结果导出成 MAP  让 OD 通过插件来加载呢?有实现的可能吗?还是打算等出支持插件版的开发插件来实现?
2006-3-13 23:18
0
雪    币: 1223
活跃值: (469)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
10
有可能直接支持导出map文件,也可能通过插件实现。
2006-3-13 23:41
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
11
支持猴子
2006-3-14 09:05
0
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
12
请问一下,最后的那张帖图显示的错误是什么情况下发生的?


好像是窗体列表没载入完的时候我做了其它操作就非法了。我也忘了。

下个版本增加个 LOG 功能。
2006-3-14 11:36
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
13
支持支持.
2006-3-14 11:50
0
游客
登录 | 注册 方可回帖
返回
//