Has*_*zar 3 obfuscation .net-4.0 deobfuscation
我可以访问我的客户端的旧managemnt系统,他想要添加更多.我能够联系最初编写主要DLL的人,然后我得到控制并开始围绕他们构建.但是现在,我需要延长原件,我别无选择,只能进行逆向工程.
我尝试了Reflector Pro和JustDecompile,但获得的源代码充满了错误.ILSpy工作得很好但是,这里是我从ILSpy获得的示例代码:
private static object ParseIntoValue(string stringValue, string targetType)
{
if (targetType != null)
{
if (<PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1 == null)
{
<PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1 = new Dictionary<string, int>(12)
{
...
};
}
int num;
if (<PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1.TryGetValue(targetType, out num))
{
object result;
switch (num)
{
cases are here...
default:
goto IL_2A6;
}
return result;
}
}
IL_2A6:
return null;
}
Run Code Online (Sandbox Code Playgroud)
很明显,这里应用了某种形式的混淆.JustDecompile和Reflector Pro的反向代码完全没用.有了ILSpy,我就可以编译一些项目而不需要任何修改.
我需要帮助来识别这种混淆(如果是这种情况).最初的开发人员说他没有混淆.我不确定.
谢谢.
反编译代码中的PrivateImplementationDetails可以是自动实现的属性.
如果<PrivateImplementationDetails>{C6507306-5ECF-4D05-8EE4-BD4D7781AC4E}.$$method0x600080f-1用属性替换代码似乎有意义.
Dictionary<string, int> MyProp { get; set;}
private static object ParseIntoValue(string stringValue, string targetType)
{
if (targetType != null)
{
if (MyProp == null)
{
MyProp = new Dictionary<string, int>(12)
{
...
};
}
int num;
if (MyProp.TryGetValue(targetType, out num))
{
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2214 次 |
| 最近记录: |