您的位置: 我要加密首页 >> 文件夹加密 >> 阅读文档:UNIX/XENIX下的一种执行文件加密方法

UNIX/XENIX下的一种执行文件加密方法

[ 作者: | 更新日期:2007-8-31 17:54:24 | 阅读次数: | 评论 0 条 | 我要投稿 ]
本文介绍一种简单易行的Xenix环境下的文件软加密方法,供读者参考。
Xenix下每个文件都有一个唯一的I节点号,我们可以利用I节点号的唯一性对执行文件进
行简单的加密。当非法用户将该执行文件拷贝到其它机器上运行时,其新分配的文件I节点号
不可能与原来一致,因而不能执行,从而使执行文件得到加密,防止非法使用。本文以文件ts
t.c为例对这一方法作简要介绍。
test.c
int xxx=1234 /*任给密钥XXX一值*/
main()
{
struct start sb,
stat(argv[0],&sb):
if(st.st—ino !=xxx) exit(-1);
.
.
.
}
当test.c编译成功后,形成test执行文件,由于程序中XXX的值为任意给定,故肯定与
test文件的I节点号不同,但我们可通过XENIX系统提供的程序调试程序adb来修改test执行文
件中的XXX值,使其与test文件的I节点号一致,这样test文件就能顺利执行了,而非法拷贝的
tst在其它机器上的节点号不可能与原I节点一样,因而不能执行而退出,由此达到文件加密的
目的。
最简单的方法是用I节点做密钥,如果想进一步增加保密性,可将I节点值进行一定的变换
,方法很多,这里不再赘述。
在使用该加密方法时应注意的是:如要将执行程序安装在另外一台机上运行时,需将源代 字串3
码和执行代码一起拷贝,然后用ncheck命令检查该执行码的I节点号,之后修改源代码中的密
钥,重新编译源代码,新的执行码覆盖原执行码(I节点号不变)。
由于上述方法在程序很大时比较费时,又比较繁琐,为了达到不经重新编译而修改执行文
件密钥的目的,笔者自编一个自动完成修改密钥程序Decry.c,清单如下:
#include
#include
#include
main(arge,argv)
int arge;
char *argv[]:
{
int cc:
char ss[80];
FILE *fp,*fopen();
struct stat sb;
cc—stat(argv[1].&sb);
/*建立adb批处理文件*/
fp=fopen""/tmp/script","w");
/*设置使用命令中数值的缺省格式为十进制*/
fprintf(fp,"$ d\n");
/*将XXX变量的值以十进制形式显示出来*/
fprintf(fp,"xxx/d\n");
/*改写变量XXX的值为文件(argv[1])的1结点号*/
sprintf(ss,"/w%d\n",sb.st—ino);
fprintf(fp,"%s",ss);
fprintf(fp,"$q"); /*退出adb */
fclose(fp);
字串3

/* w选项为修改二进制文件*/
sprintf(ss"adb-w %s/dev/null",argv[1]);
system(ss), /*执行adb修改命令*/
aprintf(ss,"strip %s",argv[1]),/*删除符号表*/
system(ss);
unlink("/tmp/script") /*删除adb批处理文件 */
}
执行命令:decry test可完成修改密钥。
该程序在xenix2.32环境下运行通过。

Tags:UNIX/XENIX 执行 文件加密
来源:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为