منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[كود] كود فك تشفير ستريتغ base64 لأي برنامح - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [كود] كود فك تشفير ستريتغ base64 لأي برنامح (/showthread.php?tid=22154)



كود فك تشفير ستريتغ base64 لأي برنامح - Cracker Egy - 18-10-17

مرحبا يا أخواني

مازلت أن أتممت تسجيلي الأن و لكن أنا متأسف جدا

لأنو ستعصيت على هذه المشكلة

و أرجو المساعذة

لدي برنامج به سترينغ مشفر ب base64

مثل ما في الصوره host و port مشفران



الطلب من أخواني ليس فرضا هو

كود أضعه في كونسول عتد رمي البرنامج المشفر عليه ينتج لي ملف به  البرنامح و الكود غير مشفر

هكذا



و هذا سورس يمكن يفيدكم

https://up.top4top.net/downloadf-6552boyc1-zip.html

ربي يوفقكم جميعا و شكرا لفتح هذا القسم للجميع من دون قيود في طرح الأسئلة


RE: كود فك تشفير ستريتغ base64 لأي برنامح - silverlight - 18-10-17

لو التشفيير مباشر و المقصد انه بيتم تحويل التكست الي Base64 مباشرة هنا فك التشفيير سهل
لكن لو التكست تم تشفييره باستخدام كلمة سر هنا يصبح فك التشفيير صعب
وبالتالي لكي تفك التشفيير لازم يكون لديك كلمة السر


الموقع به أفكار كثييرة للتشفيير وفك التشفيير
فقط عليك أن تدرسها


RE: كود فك تشفير ستريتغ base64 لأي برنامح - Cracker Egy - 18-10-17

شكرا لردك أخي

أظنك فهمت قصدي بخطأ

ما رأيك في أن أرسل لك الملف و تلقي نظرة عليه ؟

لدي سطرين معينين في برنامج دو تن مشفران بbase64
أريد طريقة لفك تشفير base64 داخل البرنامج
يعني برنامج يقوم بفكهم عند اسقاط البرنامج المشفر فيه


RE: كود فك تشفير ستريتغ base64 لأي برنامح - a.ahmed - 18-10-17

PHP كود :
using System;
using System.Text;
using System.IO;
using dnlib.DotNet;
using dnlib.DotNet.Emit;

namespace 
DumpStrings
{
 
   class Program
    
{
 
       static void Main(string[] args)
 
       {
 
           if (args.Length == 0)
 
           {
 
               Console.WriteLine("args not found");
 
               Console.ReadKey();
 
               return;
 
           }
 
           else
            
{
 
               try
                
{
 
                   // Last args part is our path, maybe I'll add some - options in future...
 
                   var ExePath args[args.Length 1];
 
                   if (!File.Exists(ExePath))
 
                   {
 
                       Console.WriteLine("File doesn't exist!\nPath => {0}"ExePath);
 
                       return;
 
                   }

 
                   string OutputPath ExePath.Substring(0ExePath.Length 4) + ".txt";

 
                   if (File.Exists(OutputPath))
 
                       File.Delete(OutputPath);

 
                   var UTFEncoder = new UTF8Encoding(true);

 
                   using (FileStream fs File.Create(OutputPath))
 
                   {
 
                       ModuleDefMD Module ModuleDefMD.Load(ExePath);

 
                       foreach (TypeDef Type in Module.GetTypes())
 
                       {
 
                           foreach (MethodDef Method in Type.Methods)
 
                           {
 
                               if (!Method.HasBody)
 
                                   continue;

 
                               foreach (Instruction Instr in Method.Body.Instructions)
 
                               {
 
                                   if (Instr.OpCode == OpCodes.Ldstr)
 
                                   {
 
                                       // (string)Instr.Operand <= this holds string "value"
 
                                       //var String = "[{Type.Name}.{Method.Name}] {(string)Instr.Operand}{Environment.NewLine}";
 
                                       var String "[" Type.Name "." Method.Name "] " + (string)Instr.Operand Environment.NewLine;
 
                                       string ch Base64Decode((string)Instr.Operand);
 
                                       if (ch != null)
 
                                       {
 
                                           String += "Decode Base64: " + (string)Instr.Operand Environment.NewLine;
 
                                           String += ch Environment.NewLine Environment.NewLine;
 
                                       }
 
                                       //Console.WriteLine("[{0}.{1}] {2}{3}", Type.Name, Method.Name, (string)Instr.Operand, Environment.NewLine);
 
                                       Console.WriteLine(String);

 
                                       byte[] Bytes UTFEncoder.GetBytes(String);
 
                                       fs.Write(Bytes0Bytes.Length);
 
                                   }
 
                               }
 
                           }
 
                       }
 
                   }
 
               }
 
               catch (Exception ex)
 
               {
 
                   Console.WriteLine("Exception: {0}"ex.Message);
 
                   Console.ReadKey();
 
               }
 
           }
 
       }

 
       public static string Base64Decode(string base64EncodedData)
 
       {
 
           try
            
{
 
               foreach (char c in base64EncodedData)
 
                   if (!"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+= ".Trim().Contains(c.ToString())) return null;
 
               var base64EncodedBytes System.Convert.FromBase64String(base64EncodedData);
 
               return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
 
           }
 
           catch (Exception ex) { return null; }
 
       }

 
   }




RE: كود فك تشفير ستريتغ base64 لأي برنامح - Cracker Egy - 19-10-17

هل جربته أخي يشتغل لأنه لم يفعل مثل ما أريد أنا


RE: كود فك تشفير ستريتغ base64 لأي برنامح - Cracker Egy - 19-10-17

أخي أحمد بارك الله فيك أتمنى منك أن لا تبخل معي في إيجاد حل

لكن أنا ما أحاول فعله الناتج يكون مفكوك التشفير لا جميع السترينغ



أريد فقط رقم 1 و 2 ينفك التشفير تاعهم و ينتج لي البرنامج نفسه لكن مكان 1 و 2 تكون مفكوكة

هذا مشروع أخر لو تلقي نظرة فيه ستفهم قصدي أخي

كود :
using System;
using System.Collections.Generic;
using System.Text;
using dnlib.DotNet;
using dnlib.DotNet.Emit;
namespace ConsoleApplication2
{
   class Program
   {
       static List<int> ints = new List<int>();
       static Dictionary<double, string> MyDictionary = new Dictionary<double, string>();
       static void Main(string[] args)
       {

           var DeobMe = @"C:\1.exe";
           var module = ModuleDefMD.Load(DeobMe);
           var types = module.GetTypes();


           foreach (var type in types)
           {
               if (!type.HasFields)
                   continue;
                // Get value field
                #region
                var ctor = type.FindDefaultConstructor();
               foreach (var ils_ctor in ctor.Body.Instructions)
               {
                   if (!ils_ctor.IsLdcI4())
                       continue;
                   ints.Add(ils_ctor.GetLdcI4Value());
               }
                #endregion
                foreach (var method in type.Methods)
               {
                   if (!method.HasBody)
                       continue;
                    // Get value for Dictionary 
                    #region
                    if (method.IsPublic && !method.HasReturnType)
                   {
                       if (method.IsSpecialName || method.IsRuntimeSpecialName)
                           continue;

                       double num = default(double);
                       string str = string.Empty;
                       foreach (var ils in method.Body.Instructions)
                       {
                           if (ils.OpCode == OpCodes.Ldc_R8)
                               num = (double)ils.Operand;
                           if (ils.OpCode != OpCodes.Ldstr)
                               continue;
                           str = ils.Operand as string;
                           MyDictionary.Add(num, str);
                       }

                   }
                   #endregion

               }
               // String Decrypter
               foreach (var method in type.Methods)
               {
                   var _ils = method.Body.Instructions;

                   for (int i = 0; i < _ils.Count; i++)
                   {
                       if (_ils[i].OpCode == OpCodes.Callvirt && _ils[i + 1].OpCode == OpCodes.Call)
                       {
                           var MD = _ils[i + 1].Operand as MethodDef;
                           if (!MD.IsStatic && !MD.IsPublic)
                               continue;
                           if (!MD.HasParamDefs && !MD.HasReturnType)
                               continue;
                           if (MD.ParamDefs.Count != 1 && MD.ParamDefs[1].ElementType != ElementType.String)
                               continue;
                           int val = (int)_ils[i - 15].GetLdcI4Value();
                           string strop = BTS(MyDictionary[value(val)]);
                           _ils[i + 1].OpCode = OpCodes.Ldstr;
                           _ils[i + 1].Operand = strop;
                           for (int numero = i; numero > i - 18; numero--)
                               _ils[numero].OpCode = OpCodes.Nop;
                       }
                   }
               }

           }
           module.Write(@"C:\2.exe");

       }

       static double value(int param)
       {
           return (Math.Pow((double)Math.Abs(param), (double)ints[0]) + (double)ints[1]) * (double)ints[2];
       }
       public static string BTS(string s)
       {
           return Encoding.UTF8.GetString(Convert.FromBase64String(s));
       }
   }
}



RE: كود فك تشفير ستريتغ base64 لأي برنامح - a.ahmed - 19-10-17

PHP كود :
using System;
using System.Text;
using System.IO;
using dnlib.DotNet;
using dnlib.DotNet.Emit;
using System.Collections.Generic;

namespace 
DumpStrings
{
 
   class Program
    
{
 
       static void Main(string[] args)
 
       {

 
           if (args.Length == 0)
 
           {
 
               Console.WriteLine("args not found");
 
               Console.ReadKey();
 
               return;
 
           }

 
           // Last args part is our path, maybe I'll add some - options in future...
 
           string ExePath args[args.Length 1];
 
           if (!File.Exists(ExePath))
 
           {
 
               Console.WriteLine("File doesn't exist!\nPath => {0}"ExePath);
 
               return;
 
           }
 
           string exten Path.GetExtension(ExePath);

 
           string OutputPath ExePath.Substring(0ExePath.Length 4) + exten;

 
           try
            
{
 
               var DeobMe ExePath// @"C:\1.exe";
 
               var module ModuleDefMD.Load(DeobMe);
 
               var types module.GetTypes();

 
               Console.WriteLine(Environment.NewLine);
 
               Console.WriteLine("Source File: {" System.IO.Path.GetFileName(ExePath) + "}");
 
               Console.Write("Processing...");


 
               foreach (var type in types)
 
               {
 
                   if (!type.HasFields)
 
                       continue;

 
                   foreach (var method in type.Methods)
 
                   {
 
                       var _ils method.Body.Instructions;

 
                       for (int i 0method.Body.Instructions.Counti++)
 
                       {
 
                           try
                            
{
 
                               if (method.Body.Instructions[i].Operand.ToString().EndsWith("::host"))
 
                                   method.Body.Instructions[1].Operand Base64Decode(method.Body.Instructions[1].Operand.ToString());

 
                               if (method.Body.Instructions[i].Operand.ToString().EndsWith("::port"))
 
                                   method.Body.Instructions[1].Operand Base64Decode(method.Body.Instructions[1].Operand.ToString());
 
                           }
 
                           catch (Exception ex) { }
 
                       }

 
                   }

 
               }

 
               string OutputFilename ExePath.Substring(0ExePath.Length 4) + "_Result" exten;
 
               module.Write(OutputFilename);   //@"C:\2.exe"
 
               Console.WriteLine(Environment.NewLine);
 
               Console.WriteLine("Result File: {" System.IO.Path.GetFileName(OutputFilename) + "}");
 
               Console.WriteLine("Successful." Environment.NewLine);
 
               Console.ReadKey();

 
           }
 
           catch (Exception ex)
 
           {
 
               Console.WriteLine(Environment.NewLine);
 
               Console.WriteLine(Environment.NewLine ex.Message);
 
               Console.ReadKey();
 
           }

 
       }


 
       public static string Base64Decode(string base64EncodedData)
 
       {
 
           try
            
{
 
               foreach (char c in base64EncodedData)
 
                   if (!"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+= ".Trim().Contains(c.ToString())) return null;
 
               var base64EncodedBytes System.Convert.FromBase64String(base64EncodedData);
 
               return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
 
           }
 
           catch (Exception ex) { return null; }
 
       }

 
   }




RE: كود فك تشفير ستريتغ base64 لأي برنامح - Cracker Egy - 30-10-17

ممكن مساعدة شباب