【问题标题】:Reverse engineering a DLL对 DLL 进行逆向工程
【发布时间】:2016-04-01 16:15:10
【问题描述】:

我正在为游戏创建个人资料编辑器。主要问题是处理用于存储所有数据的二进制文件的结构。

为此,我反编译了源代码,并浏览了处理保存(和读取)到/从保存文件的代码。然而,我撞到了一堵墙。我有类似这样的代码:

if (this.entity == Q.FG(45768))
{
//read data in one manner
}

else if (this.entity == Q.FG(96583))
{
//read data in another manner
}

这出现在更多的地方,可以有不少if then else语句。

现在,我知道this.entity 的值,因为它的值已从代码前面的保存文件中读取。但是,我不知道Q.FG(int num) 的值。代码是用 C# 编写的。

Q 是一个内部静态类,FG(int num) 是一个返回string 类型对象的内部静态方法。为了继续,我需要知道该方法的输出至少有几个数字。

另一个问题是该方法使用 dll 资源文件和名称,并且手动提供这些文件和名称给了我无效的结果。我可以检查输出,因为其中一个数字的输出必须匹配 this.entity

有没有办法可以从某个地方调用这个方法并查看它返回的结果?

我对任何方式都持开放态度,无论是编程和调用方法,还是使用工具并尝试在游戏执行期间捕获价值。

有什么办法吗?

【问题讨论】:

  • 下载ILSpy并反映FG
  • 或者您可以在 Visual Studio 中使用调试器打开应用程序,然后单步执行 MSIL 代码。在 VS 中转到调试/附加到进程
  • 愿意提供更多细节吗?我该如何反思,因为所有那些 typeof() 和 getType() 东西都没有真正解决?如何使用调试器打开整个应用程序?
  • 附加到进程不会得到任何变量,如果那是你所指的。
  • FGQ的方法,如果Q是类就是静态方法,如果是属性或字段就是实例方法。

标签: c# dll reverse-engineering


【解决方案1】:
public class Program
{
    static void Main(string[] args)
    {
        MethodInfo info2 = Type.GetType("A.PW, Assembly-CSharp").GetMethod("G", BindingFlags.Static | BindingFlags.NonPublic, null, new Type[] { typeof(int) }, null);

        System.Diagnostics.Debug.WriteLine("");
        System.Diagnostics.Debug.WriteLine("");
        System.Diagnostics.Debug.WriteLine((string) info2.Invoke(null, new object[] {75432}));
        System.Diagnostics.Debug.WriteLine((string)info2.Invoke(null, new object[] {45634}));
        System.Diagnostics.Debug.WriteLine((string)info2.Invoke(null, new object[] {70345}));
        System.Diagnostics.Debug.WriteLine((string)info2.Invoke(null, new object[] {3456}));
        System.Diagnostics.Debug.WriteLine((string)info2.Invoke(null, new object[] {4734}));
        System.Diagnostics.Debug.WriteLine("");
        System.Diagnostics.Debug.WriteLine("");
    } 
}

如果解决方案中引用了程序集,则会执行此操作。无法完全正确地获取名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2011-02-23
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2016-07-03
    • 2011-11-19
    相关资源
    最近更新 更多