如何解决使用给定的.exe GUI逆向解密算法
我正在使用Keygen应用程序(.exe)。它的GUI中有两个字段:
-
p1
-10位数字 -
p2
-12个字符
按下generate
按钮会产生一个键x
。
我对它的加密算法很感兴趣。
是否可以对算法进行逆向工程?
我想到了两种方法:
- 反编译。我使用了snowman,但是输出太脏了。反编译后的代码可能包含不相关的部分,例如GUI。
- 输入和输出分析。我想知道是否有任何选项可以通过分析一组
f(p1,p2) = x
结果来确定使用的加密算法。
解决方法
正如您提到的,使用雪人或其他一些反编译工具可能是可行的方法。
我怀疑您是否能够仅通过查看输入输出组合来确定算法,因为可以编写任何类型的任意算法,可以以任何方式运行。
也许你可以问问作者他们使用的是什么算法?
,除非事情真的很简单,否则我会排除您尝试通过查看输入和输出对来弄清楚的选项 2。
对于静态二进制文件的反编译/逆向工程,您应该首先确定它是 .NET 应用程序还是其他应用程序。如果它是用 .NET 编写的,你可以试试这个进行反编译:
https://www.jetbrains.com/decompiler/
它真的很容易使用,除非二进制文件被混淆了。
如果应用程序不是 .NET 应用程序,您可以尝试 Ghidra 和/或 Cutter,它们都内置了令人印象深刻的反编译器:
如果静态代码分析还不够,可以添加调试器。 Ghidra 和 x64dbg 可以很好地协同工作,并且可以通过安装在两者中的插件进行同步。
如果您对此不熟悉,我可以建议您查看 x86 平台的基本汇编程序,以便对 CPU 的工作原理有一个大致的了解。另一种入门方式是来自 CTF 比赛的“crackme”风格挑战。通常会有关于解决方案的精彩文章,因此您可以找到问题和答案。
祝你好运!
,输入 p1 和 p2。扫描该字节字符串的进程。然后在其上放置一个用于内存访问的硬件断点。生成密钥,它将命中该硬件断点。然后你就有了访问它的地址,并在 Ghidra 中从那里开始反转(不要忘记使用 BASE + OFFSET),因为 ghidra 的输出不会与正在运行的应用程序具有相同的基数。相关代码必须访问输入。所以你知道算法在哪里。因为它要么直接访问它,要么访问该调用链中的某个地方相对较快。没有实际看到可执行文件,没有人会知道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。