ScriptGuard:帮助保护编译的脚本免于反编译

释放双眼,带上耳机,听听看~!

简介

ScriptGuard是保护反编译的脚本的新方法。与其他一些方法不同,它不使用任何嵌入式密码,并且ScriptGuard始终可以100%有效地发挥作用。

ScriptGuard包含以下两个安全措施:

  • ScriptGuard1-编译后的脚本开始执行后,立即从内存中删除脚本源代码。
  • ScriptGuard2-为ScriptGuard1提供额外的安全性。

ScriptGuard1

ScriptGuard1依赖于以下事实:已编译的AutoHotkey脚本分两个阶段处理(所有脚本也是如此):

  1. 首先,对源脚本进行语法检查,将其加载到内存结构中并进行优化
  2. 然后从内存中的优化副本执行加载的脚本。

正常的Ahk2Exe编译过程将创建一个可执行文件,其中包含AutoHotkey解释器,脚本及其包含的任何文件。运行编译的可执行文件时,它会在执行优化结果之前以上述方式读取和分析所包含的脚本。执行开始后,可执行文件中包含的原始脚本现在不再需要,可以安全地从内存中删除。

这就是ScriptGuard1所做的。在优化副本开始执行的同时,它会从内存中擦除原始脚本。由于脚本此时不在内存中,因此内存检查方法将不再能够找到原始脚本。

此外,如果编译可执行文件分发之前MPRESS或UPX压缩,嵌入可执行脚本将不可见之前执行。因此,只有一个很小的时间窗口,其中包含的脚本是可见的。可执行文件已解压缩之后以及嵌入式脚本执行之前。由于这是一个连续的过程,因此几乎没有机会以任何方式从可执行文件中提取源脚本。

现在是代码(在脚本中包含#Include):

代码:

; ------------------------------  ScriptGuard1  --------------------------------
ScriptGuard1()                    ; Hides AutoHotkey source in compiled scripts
{ ; By TAC109, Edition: 23Aug2020 ; To use just include this code in your script
  static _ := ScriptGuard1()      ; Is automatically actioned when script starts
  local ahk:=">AUTOHOTKEY SCRIPT<", pt:=rc:=sz:=0
  if A_IsCompiled                 ; See bit.ly/ScriptGuard for more details
  { if (rc:=DllCall("FindResource",  "Ptr",0, "Str",ahk, "Ptr",10, "Ptr"))
    && (sz:=DllCall("SizeofResource","Ptr",0, "Ptr",rc,  "Uint"))
    && (pt:=DllCall("LoadResource",  "Ptr",0, "Ptr",rc,  "Ptr"))
    && (pt:=DllCall("LockResource",  "Ptr",pt,"Ptr"))
    && (DllCall("VirtualProtect", "Ptr",pt, "Ptr",sz, "UInt",0x40, "UInt*",rc))
      DllCall("RtlZeroMemory", "UInt",pt, "Int",sz) ; Wipe script from memory
    else MsgBox 64,,% "Warning: ScriptGuard1 not active!`n`nError = "
      . (A_LastError=1814 ? ("Resource Name '" ahk "' not found.`nTo fix, see "
      . "the 'Example 1' comments at http://bit.ly/BinMod.") : A_LastError)
} }                               ; For additional security, see bit.ly/BinMod
; ------------------------------------------------------------------------------

该代码应被复制或下载,并存储在一个名为 ScriptGuard1.ahk。可以使用#include语句将其并入您的脚本中(在开始处或附近)。另外,此ScriptGuard1代码可以直接复制到您的脚本中。

当直接运行包含ScriptGuard1的脚本(无需先编译)时,此代码将无效。但是,在已编译的脚本中,当脚本开始运行时,该代码将自动执行。(不需要用户的脚本直接调用ScriptGuard1()函数。)

ScriptGuard1可以与任何版本的AutoHotkey 1.1一起使用,但不能与AutoHotkey_H一起使用。(如果将MsgBox代码更改为有效的v2语法,它也将与版本2一起使用。)BinMod的用户应检查该文档的示例1,以获取更多信息。

ScriptGuard2

ScriptGuard2通过对编译脚本时生成的AutoHotkey解释器进行少量更改,为ScriptGuard1提供了额外的安全性。使用此功能完全是可选的,但可以为ScriptGuard1提供一些额外的安全性。ScriptGuard2仅适用于使用32位* .bin文件的编译。

ScriptGuard2随AutoHotkey v1.1.33.00或更高版本附带的Ahk2Exe版本一起提供。对于早期版本的AutoHotkey,请从此处获取最新的Ahk2Exe beta。

此外,必须使用版本日期为2020年8月23日或更晚的BinMod,并且需要在脚本中由; @ Ahk2Exe-PostExec编译器指令调用。

通过提供特定的 / ScriptGuard2BinMod的参数。BinMod文档的示例3提供了更多详细信息。

人已赞赏
AHKV1

[函数]禁用按键

2020-8-23 16:35:15

AHKV1文章精选

AHK终于可以赚钱了,AutoHotkey源码破解和反破解全整理

2020-8-25 16:19:55

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索