首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用给定的.exe图形用户界面反向解密算法

用给定的.exe图形用户界面反向解密算法
EN

Stack Overflow用户
提问于 2020-10-29 06:18:14
回答 3查看 262关注 0票数 2

我正在使用Keygen应用程序(.exe)。它的GUI中有两个输入字段:

  1. p1 -至少1位数,10位数最大- ^0-9{1,10}$
  2. p2 -12个字符最大值-大写字母/数字/下划线- ^A-Z0-9_{0, 12 }$

generate按钮会产生一个键x

x - 20位准确- ^0-9{20}$

对于每对(p1,p2),只有一个x (换句话说:f(p1,p2) = x是一个函数)

我对它的加密算法感兴趣。

有什么方法可以反向工程这个算法吗?

我想到了两种方法:

  1. decompiling.我用了雪人,但是输出太污染了。反编译代码可能包含与之无关的部分,例如GUI。
  2. 分析输入输出。我想知道是否有任何选项可以通过分析一组f(p1,p2) = x结果来确定所使用的加密算法。
EN

回答 3

Stack Overflow用户

发布于 2021-01-02 03:24:11

正如您所提到的,使用雪人或其他反编译工具可能是一条路。

我怀疑您是否能够通过查看输入输出组合来确定算法,因为可以编写任何类型的任意算法,这些算法可以以任何方式运行。

也许你可以问问作者他们使用的是什么算法?

票数 1
EN

Stack Overflow用户

发布于 2021-01-04 11:51:16

除非是非常简单的事情,否则我将排除您的第2种选择,即通过查看输入和输出对来找出它。

对于静态二进制文件的反编译/反向工程,您应该首先确定它是.NET应用程序还是其他什么。如果它是用.NET编写的,您可以尝试使用它进行反编译:

https://www.jetbrains.com/decompiler/

它确实很容易使用,除非二进制文件被混淆了。

如果应用程序不是.NET应用程序,您可以尝试Ghidra和/或Cutter,两者都内置了相当令人印象深刻的反编译器:

https://ghidra-sre.org/

https://cutter.re/

如果静态代码分析不够,可以向其添加调试器。Ghidra和x64dbg很好地结合在一起,并且可以通过安装在两个插件中的插件来同步。

如果您是新手,我可以建议您查看x86平台的基本汇编程序,以便对CPU的工作方式有一个大致的了解。另一个开始的方法是CTF比赛中的“破解”风格的挑战。通常有很好的解决方案,所以你有问题也有答案。

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2021-01-04 15:55:06

输入p1和p2。扫描进程中的字节字符串。然后在上面放置一个硬件断点,用于访问内存。生成键,它就会击中那个硬件断点。然后您就有了访问它的地址,并在ghidra中开始反转(不要忘记使用BASE +偏移),因为ghidra的输出将不具有与正在运行的应用程序相同的基础。相关代码必须访问输入。所以你知道算法在哪里。因为它要么直接访问它,要么在调用链中的某个地方被相对较快地访问。没有人能够不实际看到可执行文件就知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64585950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档