提前,我会说我正在学习逆向工程。确实,有些问题要问。
首先,我会问:在使用 GUI 的应用程序的汇编级别中,如何表示表单、按钮等内容?例如,什么时候我们可以发现一个按钮被点击之类的事情?在支持 GUI 的所有语言中,它们对按钮或表单使用相同的 API 或......?
在反向(从导出表地址)的另一边还有另一个问题:考虑一个程序的例子,它有两个导出地址(例如开始和一个调试检查器),它们在反汇编方法中被声明为公共,那么我们如何确定首先执行哪个?
谢谢大家。
提前,我会说我正在学习逆向工程。确实,有些问题要问。
首先,我会问:在使用 GUI 的应用程序的汇编级别中,如何表示表单、按钮等内容?例如,什么时候我们可以发现一个按钮被点击之类的事情?在支持 GUI 的所有语言中,它们对按钮或表单使用相同的 API 或......?
在反向(从导出表地址)的另一边还有另一个问题:考虑一个程序的例子,它有两个导出地址(例如开始和一个调试检查器),它们在反汇编方法中被声明为公共,那么我们如何确定首先执行哪个?
谢谢大家。
欢迎来到逆向工程 SE!
不幸的是,你的问题写得不是很好。你不应该试图将两个不同的问题合二为一,因为这会让给出一个好的答案变得更加困难。
此外,您的问题的两个部分都应该更好地用于 stackoverflow,因为它们都更多地与软件开发有关,而不是与逆向工程有关。
根据经验,你不能逆转任何你不能建造的东西。
您应该熟悉各种 GUI 框架 - 普通 Windows、MFC、.net、delphi。java swing, gtk, qt, wxwidgets) 以了解它们的工作原理、存在哪些差异以及它们有哪些共同点。然后,您可能能够确定您正尝试反向使用的程序使用哪个框架,并且您将能够确定如何使用它们的模式。但是,除非您至少用其中的一些程序编写了一些程序,否则如果您有其他程序的源代码,您甚至不会理解它们,如果您有二进制文件,就更不用说了。所以先在那里获得一些经验。
此外,导入和导出地址与程序开始的位置无关;它们是关于在执行之前将 .dll 库和程序放在一起。在尝试反转它们之前,您应该了解动态链接和创建 DLL。程序入口点定义在程序的头文件中,它与导出和导入没有任何关系。