Skip to main content

程序保护中的问题汇总

1.保护中,提示"部分被保护的函数设置了不支持的保护方式"?

答:出现这个弹错的原因是函数选择了不支持的保护方式,可以点击“添加函数”,然后勾选“仅显示不支持的函数”,然后修改显示出的函数保护方式,例如从代码加密修改为混淆。

2.添加函数如何能显示函数名称?

答:将生成的map或pdb文件同待保护程序放到同一个目录下,则可以解析出函数名称,参考显示程序的函数名文档。

特别提醒

特别提醒:如果是BSJS和C/C++ program database这种pdb格式,工具不支持无法解析出函数名称。如果不确定可以使用notepad打开pdb,截图最开头显示内容发给客服确认。

3.如何实现批量文件的加密操作呢?

答:加密工具支持多个文件批量加密,参考多个文件批量保护的使用流程文档。

4.什么情况下函数不支持的保护方式?

1)代码加密

答:函数列表中没有名称的函数,存在从函数外部跳转到函数内部时,无法使用代码加密功能;

2)代码虚拟化或代码混淆

答:编译器有时会把有些小函数优化(比如没有任何函数调用),局部变量的内存访问不分配栈直接访问;我们的混淆和虚拟化都是基于栈的,这种函数无法使用代码混淆和代码虚拟化。

3)函数过小,代码混淆、代码加密和代码虚拟化都无法使用;

代码加密:arm32/arm64指令要求最小4字节,Thumb指令要求最小12字节,x86/x64要求最小10字节;代码混淆/代码虚拟化:arm32/arm64/thumb指令最小4字节, x86/x64最小5字节。

5.加密后软件的输出如何指定目录?

答:可以单独设置 , 如下图:

native-1

6.加壳工具解析出来的函数数量跟实际数量不符?

答:编译的时候不要去掉符号表,加完壳会自动去掉符号表,符号表能帮助加壳工具解析函数。

7.出现“请输入合法的输出文件名” 如下图,如何处理?

native-2

答:出现该错误说明设置的输出路径有问题,建议将配置文件ssp删除,重新解析程序即可。

8.为什么有些函数虚拟化或混淆不支持?

答:编译器有时会把有些小函数优化(比如没有任何函数调用),局部变量的内存访问不分配栈直接访问;我们的混淆和虚拟化都是基于栈的,这种函数无法混淆。

9.多个文件如何可以批量加密和指定保存目录?

答:操作流程如下

1)设置一个dll的加密选项;2)全选dll,然后右键第一个dll,选择复用加密选项;3)全选dll,右键设置保护输出目录;4)点击【保护所有选中项目】。

10.arx为什么不显示压缩?

答:导入目录中含有ACAD.exe中,代码中会直接将压缩过滤掉了,不显示。