我有一个非常古老的应用程序,大约15年前购买,由5个.exe文件组成,用于存储患者的档案和信息。问题在于,这个应用程序是编程为在特定计算机上运行的。
由于我对破解知之甚少,我试图使用win32dasm将其反汇编,但没有关于字符串引用的信息,尝试使用Hiew将JE替换为JNE,在多次尝试后,其中一个可执行文件可以工作,但我未能修补其他文件。
有没有办法找到确切的跳转并进行修补?
谢谢 ;)
我有一个非常古老的应用程序,大约15年前购买,由5个.exe文件组成,用于存储患者的档案和信息。问题在于,这个应用程序是编程为在特定计算机上运行的。
由于我对破解知之甚少,我试图使用win32dasm将其反汇编,但没有关于字符串引用的信息,尝试使用Hiew将JE替换为JNE,在多次尝试后,其中一个可执行文件可以工作,但我未能修补其他文件。
有没有办法找到确切的跳转并进行修补?
谢谢 ;)
有一个方法,总会有方法。如果你可以运行代码,你就能够修改它。
然而,如果代码被授权在特定的计算机上工作,你可能没有合法地在另一台计算机上使用它的权利。你应该做的第一件事情是弄清楚你要尝试的东西是否合法。
话虽如此,我之前用过OllyDbg来做这种工作。这不是犯罪,只是因为代码在内存较多的机器上出现了问题——结果证明它使用了有符号比较指令,而不是无符号的。
基本思路是在运行失败的机器上记录字符串输出,然后在内存中找到该字符串,并观察任何引用它的代码。然后你应该能够从那里回溯,找到带你到达那里的条件跳转并修补它,使得它不再(例如,用nop字节替换整个jCC指令)。
但是,我强调一下,这需要一些调查研究,它不是你按下一个按钮就能解决的事情。你可能需要深入研究汇编语言才能理解它是如何工作的。