一种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都算是仅仅使用一次即删除。
注册表可以添加一个标识,记录程序执行时间,与电脑上次开机运行时间,若时间不对则证明被有意或无意关闭过,有被发现的可能,相应做出对策。
仅仅是作为一个小实验,不放码~研究探讨~
- 一种exe启动方式的设计探讨
- 对一种基于CAS的Singleton实现方式的探讨
- activity的一种精彩的启动方式
- 两一种启动多线程的方式:Runnable
- 三星MCU的一种启动方式
- 一种很帅的设计方式
- [设计模式]DAO的实现方式探讨_Part I
- [设计模式]DAO的实现方式探讨_Part II
- 不同的方式启动exe 引发的后果
- Python启动外部exe方式
- 宽放大模式——一种前端模块化的方式探讨
- Java启动本机应用程序EXE的三种方式
- 一种新的BootLoader启动引导方式研究
- 一种新的BootLoader启动引导方式研究
- 一种以standalone方式启动erlang应用的方法
- APP启动界面的实现,第一种方式
- Redis存储Key的一种设计实现方式:模式匹配
- 权限设计的探讨
- xcode如何设置app始终竖屏?
- Linux 基础命令(四)—— 文件的权限和访问控制列表(ACL)
- PCControl 注册码生成
- 计算当前日期是第几天
- js checkbox 选值校验 修改回显
- 一种exe启动方式的设计探讨
- Word快捷键大全
- Golang 在 Mac、Linux、Windows 下如何交叉编译
- IntelliJ IDEA 创建web项目1(4)
- MVC request生命周期
- SQL注入工具sqlmap使用手记
- Docker基础命令
- 通过SpringBoot访问HTML页面
- python中子类调用父类的初始化方法