HCTF2018逆向分析:解密LuckyStar的关键技巧

需积分: 9 4 下载量 102 浏览量 更新于2024-09-12 收藏 1.83MB DOCX 举报
"逆向工程 HCTF2018 LuckyStar 反调试 TlsCallback 加密算法 base64 循环加密" 这篇文章介绍了HCTF2018逆向工程挑战赛中的"LuckyStar"题目分析。逆向工程是安全领域中的一项技术,用于分析二进制代码以理解其内部工作原理。在这个挑战中,参赛者需要分析一个名为"LuckyStar"的.exe文件,以找到隐藏的关键代码并解密输入密钥。 首先,作者提到程序没有壳,即没有常见的保护层,但通过IDA(Interactive Disassembler)分析字符串并未发现直接线索。他们注意到一个名为"TlsCallback"的函数,这是一个在进程创建和销毁时被调用的函数。在某些恶意软件或复杂程序中,关键代码可能会被加密,并在特定的回调函数中解密,以便在调试器下难以发现。作者尝试通过修改PE文件的Tls表来绕过TlsCallback的反调试检查,成功阻止了Tls回调的执行。 然而,尽管绕过了TlsCallback,作者仍未能找到关键代码,因为解密循环也位于该回调函数内。最终,他们选择直接NOP(无操作指令)掉反调试部分的代码,以继续执行。 接下来,程序动态调用函数表中的函数,加载了许多库函数,这可能是导致程序不稳定的原因之一。作者在调用函数的地方设置断点,通过F9单步执行,直至发现已解密的关键代码。 输入阶段,程序会先对密钥进行base64编码,但需要注意的是,它的编码表是颠倒的。之后,密钥会经过两层循环的随机数加密,这里的随机数生成由于srand(0x616161)固定,因此可以预测。最后,程序从两个16字节的区域取出32字节的密文与用户输入的密钥进行比较。 为了破解,作者编写了一个C语言脚本来处理这些步骤,虽然自谦Python技能不足,但这个过程展示了逆向工程中的常见技巧,包括识别和绕过反调试机制、动态分析和解密算法的逆向工程。 这个挑战涉及了逆向工程中的多个关键知识点:识别和利用TlsCallback,处理反调试技术,理解并解密加密算法,以及动态分析程序行为。这对于提升逆向工程和安全分析能力是非常有价值的实践。