首页
社区
课程
招聘
[求助].NET程序脱壳
发表于: 2022-2-17 15:28 27576

[求助].NET程序脱壳

2022-2-17 15:28
27576

最近在研究一个被混淆过的.NET程序,用Exeinfo PE v0.0.6.8检查,显示MS Visual C# / Basic.NET [ Obfus/Crypted ] - EP Token : 06000553
Big sec. 1 .text , Obfuscated like : DeepSea Obfuscator v4 / Ben-Mhenni-Protector / Babel v9.3 Explore and analyze .NET assemblies with .NET Reflector v10
图片描述
用Detect It Easy v3.04检查,显示:保护器Eziriz.NET Reactor (6.x.x.x);保护器:Obfuscar(1.0)
图片描述
用了很多个版本的de4dot,都是显示Detected Unknown Obfuscator ---
Cleaning --- Renaming all obfuscated symbols --- Saving

 

脱壳出来的程序再用Exeinfo PE或Detect It Easy检查,显示的信息还是跟没脱壳前一样。
请教一下大神,有什么办法可以脱壳吗?谢谢


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 6252
活跃值: (2732)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

字符串未解密,自己解密下<PrivateImplementationDetails>{AACD92D2-3620-4201-B489-A371B57F8FEF}.class0

上传的附件:
2022-2-18 09:40
0
雪    币: 197
活跃值: (434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
wuzhouzcx 字符串未解密,自己解密下&lt;PrivateImplementationDetails&gt;{AACD92D2-3620-4201-B489-A371B57F8FEF}.class ...
非常感谢您的帮助。请教一下字符串怎么解密?谢谢
2022-2-18 10:56
0
雪    币: 6252
活跃值: (2732)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

自己写程序,调用dnlib,下面是".Net Reactor(6.x.x.x)"保护壳一个简单的例子: 

 internal class NetReactor6XXX
	{		
 		internal static class StringDecrypt
		{

			public static int Execute(string resource,byte[] key,byte[] iv,byte[] token,string sign)
            {
				NetReactor6XXX._rij_resource=resource;//资源文件名称
				NetReactor6XXX._rij_key= key;
				NetReactor6XXX._rij_iv= iv;
				NetReactor6XXX._publick_key_token= token;
				NetReactor6XXX._function_sign = sign;//解密函数签名

				int count = 0;
				foreach (TypeDef typeDef in Context.module.GetTypes())
				{
					foreach (MethodDef methodDef in typeDef.Methods)
					{
						if (!methodDef.HasBody)
							continue;

						for (int i = 1; i < methodDef.Body.Instructions.Count; i++)
						{
						        //查找加密函数特征
							Instruction insPrev = methodDef.Body.Instructions[i - 1];
							Instruction insAfter = methodDef.Body.Instructions[i];
							if (insAfter.OpCode == OpCodes.Call && insPrev.OpCode == OpCodes.Ldc_I4
									&& insAfter.Operand.ToString().Contains(NetReactor6XXX._function_sign))
							{
								try
								{
									int param = insPrev.GetLdcI4Value();
									object str = Class3.smethod_1(param);//这里是调用解密函数位置
									if (null != str)
									{
									        //以下是清理改写代码
										insPrev.OpCode = OpCodes.Nop;
										insAfter.OpCode = OpCodes.Ldstr;
										insAfter.Operand = (string)str;
										count++;
									}
								}
								catch (Exception)
								{
								}
							}
						}
					}
				}

				return count;
			}
		}

		private static string _rij_resource;
		private static byte[] _rij_key;
		private static byte[] _rij_iv;
		private static byte[] _publick_key_token;
		private static string _function_sign;
 }
 
 private static void NetReactor6xxx_StringDecrypt()
        {
			byte[] key = new byte[32];
			key[0] = 112;
			key[0] = 135;
			key[0] = 91;
			key[0] = 101;
			key[1] = 89;
			key[1] = 225;
			key[1] = 125;
			key[1] = 145;
			key[1] = 156;
			key[1] = 70;
			key[2] = 160;
			key[2] = 90;
			key[2] = 108;
			key[2] = 135;
			key[2] = 129;
			key[2] = 152;
			key[3] = 206;
			key[3] = 107;
			key[3] = 211;
			key[3] = 96;
			key[3] = 136;
			key[3] = 239;
			key[4] = 160;
			key[4] = 126;
			key[4] = 108;
			key[4] = 93;
			key[4] = 130;
			key[4] = 53;
			key[5] = 95;
			key[5] = 118;
			key[5] = 2;
			key[6] = 170;
			key[6] = 134;
			key[6] = 193;
			key[7] = 121;
			key[7] = 65;
			key[7] = 137;
			key[7] = 191;
			key[8] = 132;
			key[8] = 100;
			key[8] = 173;
			key[9] = 190;
			key[9] = 50;
			key[9] = 129;
			key[9] = 199;
			key[10] = 54;
			key[10] = 158;
			key[10] = 206;
			key[11] = 136;
			key[11] = 84;
			key[11] = 102;
			key[11] = 185;
			key[11] = 144;
			key[11] = 244;
			key[12] = 164;
			key[12] = 152;
			key[12] = 112;
			key[12] = 158;
			key[12] = 108;
			key[13] = 118;
			key[13] = 129;
			key[13] = 98;
			key[13] = 231;
			key[14] = 153;
			key[14] = 235;
			key[14] = 87;
			key[15] = 146;
			key[15] = 154;
			key[15] = 199;
			key[15] = 169;
			key[15] = 146;
			key[16] = 132;
			key[16] = 18;
			key[16] = 167;
			key[16] = 238;
			key[17] = 144;
			key[17] = 114;
			key[17] = 115;
			key[18] = 146;
			key[18] = 114;
			key[18] = 82;
			key[19] = 160;
			key[19] = 122;
			key[19] = 90;
			key[19] = 123;
			key[19] = 98;
			key[19] = 164;
			key[20] = 49;
			key[20] = 170;
			key[20] = 58;
			key[20] = 182;
			key[20] = 30;
			key[20] = 182;
			key[21] = 111;
			key[21] = 137;
			key[21] = 97;
			key[21] = 88;
			key[21] = 236;
			key[22] = 143;
			key[22] = 128;
			key[22] = 193;
			key[23] = 177;
			key[23] = 113;
			key[23] = 72;
			key[23] = 87;
			key[23] = 180;
			key[24] = 152;
			key[24] = 99;
			key[24] = 148;
			key[25] = 112;
			key[25] = 140;
			key[25] = 90;
			key[25] = 228;
			key[26] = 163;
			key[26] = 88;
			key[26] = 27;
			key[27] = 98;
			key[27] = 72;
			key[27] = 153;
			key[27] = 85;
			key[28] = 120;
			key[28] = 48;
			key[28] = 176;
			key[29] = 134;
			key[29] = 106;
			key[29] = 122;
			key[29] = 99;
			key[29] = 109;
			key[29] = 246;
			key[30] = 211;
			key[30] = 107;
			key[30] = 121;
			key[30] = 144;
			key[30] = 90;
			key[31] = 174;
			key[31] = 12;
			key[31] = 111;
			key[31] = 183;
			key[31] = 135;
			key[31] = 232;
			byte[] iv = new byte[16];
			iv[0] = 146;
			iv[0] = 101;
			iv[0] = 152;
			iv[0] = 113;
			iv[0] = 94;
			iv[0] = 85;
			iv[1] = 202;
			iv[1] = 150;
			iv[1] = 162;
			iv[1] = 92;
			iv[1] = 57;
			iv[1] = 93;
			iv[2] = 174;
			iv[2] = 125;
			iv[2] = 156;
			iv[2] = 146;
			iv[2] = 252;
			iv[3] = 124;
			iv[3] = 36;
			iv[3] = 181;
			iv[3] = 143;
			iv[3] = 164;
			iv[3] = 153;
			iv[4] = 124;
			iv[4] = 115;
			iv[4] = 128;
			iv[4] = 96;
			iv[4] = 175;
			iv[5] = 98;
			iv[5] = 150;
			iv[5] = 134;
			iv[5] = 215;
			iv[5] = 146;
			iv[6] = 115;
			iv[6] = 121;
			iv[6] = 122;
			iv[7] = 151;
			iv[7] = 145;
			iv[7] = 55;
			iv[8] = 95;
			iv[8] = 45;
			iv[8] = 133;
			iv[9] = 102;
			iv[9] = 97;
			iv[9] = 69;
			iv[10] = 89;
			iv[10] = 115;
			iv[10] = 110;
			iv[10] = 142;
			iv[10] = 1;
			iv[11] = 103;
			iv[11] = 149;
			iv[11] = 108;
			iv[11] = 124;
			iv[11] = 201;
			iv[11] = 84;
			iv[12] = 95;
			iv[12] = 134;
			iv[12] = 109;
			iv[13] = 101;
			iv[13] = 194;
			iv[13] = 235;
			iv[13] = 153;
			iv[13] = 132;
			iv[13] = 84;
			iv[14] = 197;
			iv[14] = 155;
			iv[14] = 55;
			iv[15] = 97;
			iv[15] = 134;
			iv[15] = 92;
			iv[15] = 227;
			iv[15] = 135;
			NetReactor6XXX.StringDecrypt.Execute("DotFuscatorClean.MHgnQI18MeETmQHdjt.IKLdKFIqODMhW1o0kH", key, iv, null, "System.String Class6::smethod_1(System.Int32)");	
		}
 
 private void btnClean_Click(object sender, EventArgs e)
        {
            if(File.Exists(tbPath.Text))
            {
                try
                {
                    Context.module = ModuleDefMD.Load(tbPath.Text);
					//Context.assembly = Assembly.LoadFrom(tbPath.Text);

		//decrypt string
		//SmartAssembly_StringDecrypt();
		NetReactor6xxx_StringDecrypt();
		//control flow
		//ControlFlowClean.ExecuteArithmetic();
		//ControlFlowClean.Execute();

		ModuleWriterOptions options = new ModuleWriterOptions(Context.module);
                    options.Logger = DummyLogger.NoThrowInstance;
                    options.MetadataOptions.Flags = MetadataFlags.KeepOldMaxStack | MetadataFlags.PreserveAll;
                    Context.module.Write(Path.GetDirectoryName(tbPath.Text) + "/" + Context.module.Assembly.Name + "_cleaned" + extention, options);
                    lblInfo.Text = "clean finished!";
                }
                catch(BadImageFormatException ex)
                {
                    SetErrMsg(ex.Message);
                }
            }
            else
            {
                SetErrMsg("file not exist!");
            }
        }


2022-2-18 12:42
0
雪    币: 197
活跃值: (434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
wuzhouzcx 自己写程序,调用dnlib,下面是&quot;.Net Reactor(6.x.x.x)&quot;保护壳一个简单的例子:&nbsp;&nbsp;internal&am ...
非常感谢wuzhouzcx,抽时间试一下
2022-2-18 16:17
0
雪    币: 193
活跃值: (415)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
wuzhouzcx 自己写程序,调用dnlib,下面是&quot;.Net Reactor(6.x.x.x)&quot;保护壳一个简单的例子:&nbsp;&nbsp;internal&am ...
请问老大能把代码工程上传一下吗?谢谢!
2022-4-10 19:35
0
雪    币: 203
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
学到了 各位大佬 厉害
2022-4-13 15:36
0
雪    币: 769
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
这个我菜鸟可以脱壳过,一样的壳,当时脱得就是别人的注册机
2022-8-17 00:51
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
非常容易破解了 我也破解了 VX 一五八五零一零九八六五
2022-8-20 23:22
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
代码全部逆向出来了
2022-8-20 23:22
0
游客
登录 | 注册 方可回帖
返回
//