用于解密 KPOT 窃取器字符串的 IDA Python 脚本,并将这些字符串设置为运行时接收它们的变量旁边的注释。其工作方式如下:
获取通过 eax 传递给任一解密函数的偏移量(解密函数有两个,这就是本仓库包含两个脚本的原因),可以使用 mov 或 pop eax。
通过读取数组对应的长度和 XOR 密钥来解密数组中的字符串。
打印解密后的字符串以及其被设置为注释的位置的偏移量,同时打印任何无法解密的字符串(见下面的 重要注意事项)。
在代码中,有少数情况恶意软件会使用脚本未涵盖的不同方法。你可以通过跟踪带有 Could not decrypt xref: 消息的地址来找到这些情况,并通过手动向相关函数提供偏移量来解密它们。
脚本通过 decode() 将解密后的数组转换为字符串。根据我的经验,KPOT 解密的字节数组中有三个不是字符串,这会导致脚本崩溃。这些就是在 kpot-string-decrypter-pt1.py 中被忽略的偏移量。
search_offset() 中添加一行打印当前地址的代码,可以帮助你找到脚本崩溃的位置。decrypt_str() 的返回值改为 return(newarray.hex()) 即可。要了解该使用两个脚本中的哪一个,请检查解密例程 - pt1 用于仅执行字节 XOR 的子程序,而 pt2 用于在 XOR 后执行 AND 0xFF 的子程序。