1
ysc3839 2021-10-22 08:46:42 +08:00 via Android 3
|
2
miyuki 2021-10-22 08:49:15 +08:00 via iPhone 1
没有“加密”,只有混淆
|
3
icemanpro 2021-10-22 08:57:19 +08:00
bat to exe
|
4
IsaacYoung 2021-10-22 09:34:23 +08:00
std::string result = system("./some_command");
|
5
IsaacYoung 2021-10-22 09:35:15 +08:00
用 c++重写
std::string result = system("./some_command"); 编译成二进制 |
6
CatCode 2021-10-22 09:37:28 +08:00
bat 脚本就是 windows 的一些调用吧 改用 C#写啊 编译成 exe 然后 UPX 打包
|
8
2i2Re2PLMaDnghL 2021-10-22 10:32:18 +08:00
|
9
2i2Re2PLMaDnghL 2021-10-22 10:36:35 +08:00
@ysc3839 可以被自动化地反混淆
|
10
disk 2021-10-22 10:43:32 +08:00
@2i2Re2PLMaDnghL 很多恶意软件会通过加密的 bat/powershell 来实现一些功能,一样被逆向干碎。混淆下糊弄普通用户就差不多了。
|
11
crab 2021-10-22 11:20:15 +08:00
简单点 base64 下吧,不懂的以后是加密,懂的再怎么弄解密也只是时间问题。
|
12
ysc3839 2021-10-22 12:53:11 +08:00 via Android
@2i2Re2PLMaDnghL 我没仔细看过里面的实现,但是其他脚本语言比如 JavaScript,反混淆后变量名也不能保留,可读性会很差。
如果这也不能接受,那只能改用别的语言了。 |
13
2i2Re2PLMaDnghL 2021-10-22 13:12:38 +08:00 1
@ysc3839 两个的实现都是字典法,然后把代码替换成字符串截取
特殊地,第二个强行改了 BOM 头,直接用文本编辑器打开是乱码,但当作 UTF-8 打开就是很正常的内容。 没有做变量名混淆的样子…… 主要是 bat 很难改变量名,因为所有变量名都是线程间共享、进程间 CoW 的环境变量名,其副作用是不可控的。 |
14
g00001 2021-10-22 13:43:51 +08:00
可以在 aardio 里嵌入 BAT 生成 EXE 文件,
方法很简单, 例如下面几句代码按 F7 就可以生成 EXE 了: import console import process.batch; //批处理 for 遍历并拆分字符串 var bat = process.batch(` @echo off for %%i in (abc,def,xyz) do echo %%i `) console.log(bat.read(-1)) console.pause() 这样对付一般的小白用户没问题了, 如果还想增加难度,可以把关键信息用 C 语言实现,批处理可以与 aardio 混编,aardio 又可以方便地调用 C 写的 DLL,例如: import tcc; //编译 DLL tcc.build( "/start.dll" ).code = /*** #include <windows.h> __declspec(dllexport) int Add( int a,int b ) { return a + b; } ***/ //加载 DLL var dll = raw.loadDll( "/start.dll",,"cdecl" ); //调用 C 函数 var result = dll.Add(12,3); |
15
cat9life 2021-10-22 15:14:35 +08:00
绝对的加密肯定是没有啊,编译成 exe 对付一般人应该够了
|