-3

我有以下代码:

#include <iostream>
#include <string>

void main()
{

    std::string str;
    std::cin>>str;

    if(str == "TheCorrectSerialNumber")
        std::cout<<"Hello world!!!"<<std::endl;
}

我需要一个反编译或反汇编工具,它可以通过执行以下列出的步骤来帮助我找到“TheCorrectSerialNumber”。所以步骤是:

  1. 反编译或反汇编我的代码的可执行文件
  2. 运行 exe,输入的不是正确的序列号,而是“AAA”之类的内容</li>
  3. 找到我的“AAA”和正在比较的字符串,最后找出“TheCorrectSerialNumber”。

还请向我提供您建议的工具如何执行上述步骤的说明。

非常感谢!!!

注意:对于那些倾向于认为我想破解某人的密码的人!首先看看我在这个问题之前和之后提出的问题。我是一名程序员,我需要关注我的代码安全性。因此,我决定破解我的代码并对其他代码进行一些练习(在教授破解的网站上有一堆旨在破解的软件)以了解如何提供安全代码。如果您知道人们如何破解,您可能会创建比不知道的人更安全的代码。如果您要研究如何破解,则必须尝试。这就是我的观点!

4

6 回答 6

3

根据您使用的平台,您可以使用 GDB(Gnu 调试器)或 IDA Pro。

于 2009-10-01T12:58:00.170 回答
2

我在 Windows 上的逆向工程方面没有太多经验,但是关于逆向基本二进制文件, Lena 的教程可能是最好的起点。它将引导您了解在程序集级别分析二进制文件和修补它们的基础知识。我相信它主要使用ollydbg

于 2009-10-01T13:11:46.263 回答
1

要么你在做不道德的事情,要么你没有。无论哪种方式,您都需要一种称为调试器的东西,并且将为您的平台提供一个。

调试器是一种工具,旨在通过附加到正在运行的代码并让您在运行时检查其状态来帮助调试程序。本质上,您可以查看代码的状态(何时运行等)并说明数据是否存在。毕竟它只是一个程序计数器和一些内存,还有一些寄存器可以让生活更轻松。

于 2009-10-01T12:55:37.050 回答
1

拆卸非常容易。您需要 HIEW 和 W32DASM 工具或 OllyDbg(例如)。只需看一些在 youtube 中使用此工具的示例(破解)。

www.wasm.ru www.cracklab.ru

非常有用的网站!!!!

于 2009-10-03T07:16:13.047 回答
0

伙计 .. 对于像这样微不足道的事情,只需在记事本中打开它,您就会发现您的“TheCorrectSerialNumber”.. 可能就在“Hello World!!!”旁边。

于 2009-10-01T15:26:18.443 回答
-2

灰帽蟒 http://nostarch.com/images/ghpython_cov.png

假设您没有做违法的事情。我可以推荐用于逆向工程的灰帽书,特别是如果您已经精通 python。

于 2009-10-01T13:17:38.133 回答