首页新闻找找看学习计划

.net混淆代码的反编译

0
悬赏园豆:20 [已解决问题] 解决于 2013-07-26 17:07

  本用 ILSpy 反编译后,混淆代码已经出现了,但是如果那些乱码没办法解决,请教哪位大侠帮忙看看啊,似乎是字符串混淆,试了很多办法没能破解。

ScanType scanType = new ScanType
{
    barcode = this.BarcodeCodeText.get_Text(),
    noscan = Setting.Method_00("", a_)
};
PhoneApplicationService.get_Current().get_State().set_Item(Setting.Method_00("㩨ࡪ౬Ů╰ੲմቶ", a_), scanType);
base.get_NavigationService().Navigate(new Uri(Setting.Method_00("䙨㭪౬࡮ᑰr婴⑶᩸᩺፼㵾햌ﲐメ몔�漢列쾠쒢욦�寧좬�쒰�솴馶솸�킼펾", a_), 2));
num = 9;
continue;
灰身的主页 灰身 | 初学一级 | 园豆:188
提问于:2013-07-25 17:33
< >
分享
最佳答案
0
从反编译的代码上来看,Setting.Method_00是一个字符串加密程序。看看能反编译这个函数不?
这个函数这个函数应该是个静态函数,通过提取这个函数和变量 a_ (我觉得这个应该是个常量,找找在哪儿赋值的) 运算还原原始字符串。
收获园豆:18
天方 | 大侠五级 |园豆:5264 | 2013-07-25 23:03
其他回答(4)
0

参考 http://www.cnblogs.com/2018/archive/2010/05/14/1735781.html 使用其他的工具试试

收获园豆:1
2012 | 园豆:18932 (专家六级) | 2013-07-25 18:18

谢谢,常见的几种工具都试过了,别的代码能成功了,唯独文中贴出来的一串字符不行,也是最关键的地方,不知他们用了什么办法

支持(0) 反对(0) 灰身 | 园豆:188 (初学一级) | 2013-07-25 20:16

@灰身: 看看二进制,估计是别的编码吧,如Base64,UTF-8啥的,根据内码和界面的汉字对照看看

支持(0) 反对(0) 2012 | 园豆:18932 (专家六级) | 2013-07-26 08:36
0

这个乱码的问题的确不怎么好处理。默认的VS带的那个混淆工具混淆后字符串通过公钥就是乱码了,之前见过,后来是通过Il修改的。楼主尝试更改下字符串看看,工具估计还真没有,大多也是ASCII转UTF8的,没什么可用的。

收获园豆:1
````` | 园豆:14268 (专家六级) | 2013-07-26 09:44
0

谢谢各位能来回答,是很好的精神上支持,终于总算解开了,用这段代码:

 1         internal static string peek(string text, int value)
 2         {
 3             char[] array = text.ToCharArray();
 4             int num = checked((((int)(((unchecked(590482263u + 0u + 0u) | 0u) << 0 >> 0) - 0u) >> 0) + 0 >> 0 << 0) - 0) + value;
 5             int m, n;
 6             if ((n = (m = 0)) < 1)
 7             {
 8                 while (true)
 9                 {
10                     int num2;
11                     int expr = num2 = n;
12                     char[] args = array;
13                     int arg = num2;
14                     char expr2 = array[num2];
15                     byte b = (byte)((int)(expr2 & 'ÿ') ^ num++);
16                     byte b2 = (byte)((int)(expr2 >> 8) ^ num++);
17                     byte arg2 = b2;
18                     b2 = b;
19                     b = arg2;
20                     args[arg] = (char)((int)b2 << 8 | (int)b);
21                     m = expr + 1;
22                     if ((n = m) >= array.Length)
23                     {
24                         break;
25                     }
26                 }
27             }
28             return string.Intern(new string(array));
29         }
灰身 | 园豆:188 (初学一级) | 2013-07-26 17:04
0

高手 你是怎么解开的?能共享下吗?

c菜鸟 | 园豆:202 (菜鸟二级) | 2015-08-21 22:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册