我正在处理一种有趣的混淆形式。我正在逆向的 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 “成功”清理它们之后,也没有任何改变。