C#隐藏方法通过透明代理对象?

逆向工程 混淆 。网 C#
2021-07-05 05:52:01

我正在处理一种有趣的混淆形式。我正在逆向的 AC# 程序有一个中央 API,我们称之为“中央 API”。这个中央 API 有几个没有准确定义的函数。

例如,这个中央 API 类中的所有函数都是这样的:

    public string SomeFunction(string name)
    {
        IServiceInterface interface = base.\u0001();
        try
        {
            if (interface != null)
            {
                return interface.SomeFunction(name);
            }
        }
        catch (Exception ex)
        {
            ...
        }
        finally
        {
            ServiceInterface.Close(interface);
        }
        return string.Empty;
    }

base.\u0001 做这个:

    internal IServiceInterface \u0001()
    {
        IServiceInterface result = null;
        try
        {
            result = this.ChannelFactoryClient.CreateChannel();
        }
        catch (Exception ex)
        {
            ...
        }
        return result;
    }

base.\u0001()返回具有该类型的对象"System.Runtime.Remoting.Proxies.__TransparentProxy"(在调试时找到),但是当我在调试时查看该值时,没有成员函数"SomeFunction"或任何其他函数。该对象包含各种信息,但似乎没有暗示“SomeFunction”的真实位置。

有谁知道我应该采取的下一步来 find"SomeFunction"的真实位置(也许要在对象中寻找什么)?作为参考,这个项目的一些模块被 SmartAssembly 混淆了,即使在 de4dot “成功”清理它们之后,也没有任何改变。

0个回答
没有发现任何回复~