一种exe启动方式的设计探讨

来源:互联网 发布:数控编程工资多少一月 编辑:程序博客网 时间:2024/06/03 22:23

简单描述下该种方式,

首先有一个copy到电脑里的EXE,此时手动点击打开EXE,EXE里的操作是一个弹窗,如下

以后每次重启电脑都会自动启动exe弹出这个弹窗……

可能大家想这不就是添加个自启注册表吗?

但是你会发现结束进程,或是删除EXE,下次依然会启动程序。


介绍下需要实现的效果:

抛开初次主动点击的,EXE第一次启动后就加入自启注册表,并在硬盘随机位置生成随机命名的EXE复制,该EXE里的功能方法通过随机密钥加密,将随机密钥储存与注册表某一位置随机生成一键值,用到了四个随机,下面具体说明。


PC重启时,循环上面操作。此时有系统自启动的话多一个操作,EXE开始时就执行删除自身一段码,无论程序是否异常中断都可以自删除。为了更稳定确认,在添加新注册表自启前记录上一次自启地址,在下次启动时根据上次EXE路径检测上次的EXE是否成功自删除,若没有则删除。


(这段自删除码通常情况下可以保证无论如何都可以删除EXE自己)


这么操作的意义在于何处?

当用户发现此EXE的进程时,用户结束进程,删除EXE文件,但是下次依然还会启动,自启地址已经变更,下次启动的EXE已经生成,设计机制在于每次的EXE仅仅使用一次即自删除。随机加密在于混淆视听,一定程度免杀。

此时当前被用户发现的EXE目录的信息在注册表无记录,通过检索注册表没有EXE的信息(虽然记录了,但是那个路径值可以加密)。


关于四个随机:

查找C盘可以读写的随机的目录,这个操作以后写,仅存在三级目录下,为了使EXE隐藏的更好且不显眼。

随机密钥虽然是随机要存在注册表中,

随机注册表位置要有识别字符,再遍历时候能保证一些信息独一无二,方便识别出是自己的东西。


设计的操作顺序:
(版本不同只是程序里的功能方法变换加密方式和密钥(功能方法是shellcode形式的二进制码),以保证每次看起来都是新的exe,但是功能始终不变)
真真的第一次启动是自己手动点击,后来都不需要。
第一次用0版本启动,生成1版本exe,在【自启注册表项】加入1版本位置A,【下次启动删除记录项】本次为空,不记录

下面,重启了电脑开始工作:
启动次数(启:自动启动的exe;注:注册表添加exe自启的地址;生:生成新的exe;删:需要删除的exe的地址;记:记录下次启动删除的exe地址)
                启    注   生       删  记   (字母为exe所在地址,数字为exe编号,不同数字表示exe校验值已经不同)
第一次    1:  2---A(2)---1---A---   重启PC后初次自启动版本1号exe,【自启注册表】修改为自启2号版本exe,在A位置生成2版本号exe,初次启动无删除操作
第二次    2:  1---B(3)---2---B---   自启注册表修改为启动3号版本exe,在B位置生成3版本号exe,删除
第三次    3:  2---C(4)---3---C---
第四次    4:  3---D(5)---4---D---


操作:
无               无
(无版本)启用 --> 执行自杀-->删除记录exe --> 记录上次自启表 --> 添加下次自启exe位置注册表 -->生成exe
无               有
(有版本)启用 -->执行自杀--> 删除记录exe --> 记录上次自启表 --> 添加下次自启exe位置注册表 -->生成exe
有               有
(有版本)启用 -->执行自杀--> 删除记录exe --> 记录上次自启表 --> 添加下次自启exe位置注册表 -->生成exe
--> 循环操作

第一次进入无删除操作,
第二次开始删除前次exe,
仅当自启注册表被发现时可有效删除exe,否则每次exe都算是仅仅使用一次即删除。
注册表可以添加一个标识,记录程序执行时间,与电脑上次开机运行时间,若时间不对则证明被有意或无意关闭过,有被发现的可能,相应做出对策。


仅仅是作为一个小实验,不放码~研究探讨~


原创粉丝点击