如何定位用于加密的代码

逆向工程 反编译 解密
2021-06-15 01:20:52

我一直在尝试记录在我的 PC 上的应用程序之间发送和发送的数据包。

从逻辑上讲,任何发送或接收数据包的程序都必须使用加密方案。所以我想尝试在测试应用程序的代码中找到它。

任何人都可以就如何去做这件事提出建议吗?我不确定如何识别何时调用了哪些代码行,即使我是新的,我也可以准确地知道数据包是何时创建的。任何有用的软件、教程等的链接都会很棒!

PS 第一次在这个网站上提问,让我知道我是否/如何改进这个问题。

1个回答

这个问题有点宽泛,因为它不是询问您找到的特定程序或特定网络数据包。一个更好的问题可能是“我有一个发送网络数据包的程序,但是用wireshark转储数据包不会产生任何可读的东西。我假设应用程序正在加密数据包,我该如何调查这个”?

你说“逻辑上任何发送或接收数据包的程序都必须使用加密方案”。这不是真的 - 您的 Web 浏览器、FTP 客户端和许多其他程序发送的所有内容都未加密。当然,除非您在浏览器中使用 https,并且有很多关于其工作原理的文档。

因此,让我们假设您有一个程序,转储网络数据包,并假设它们已加密。所以您想知道您的应用程序中是否有任何加密代码。这就是signrch的用途;它检测您的程序是否包含在标准加密方案(如 AES)中使用的任何常量。

接下来,您需要一个像Ollydbg甚至IDA Pro这样的调试器来进一步分析程序。有大量的教程展示了如何使用它们。但是,我不会推荐一个特定的,因为什么对你有好处在很大程度上取决于你已经知道多少 - 任何推荐都非常基于意见,我们不喜欢 Stackexchange 上基于意见的答案。