الفريق العربي للهندسة العكسية

نسخة كاملة : hook dll c#
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace hook
{
	// Token: 0x02000003 RID: 3
	internal class Program
	{
		// Token: 0x06000004 RID: 4
		[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true)]
		private static extern bool VirtualProtect(IntPtr lpAddress, int dwSize, uint flNewProtect, out uint lpflOldProtect);

		// Token: 0x06000005 RID: 5 RVA: 0x00002080 File Offset: 0x00000280
		[Obfuscation(Feature = "virtualization", Exclude = false)]
		public byte SecondIf()
		{
			return 0;
		}

		// Token: 0x06000006 RID: 6 RVA: 0x00002080 File Offset: 0x00000280
		[Obfuscation(Feature = "virtualization", Exclude = false)]
		public byte FirstIf()
		{
			return 0;
		}

		// Token: 0x06000007 RID: 7 RVA: 0x00002094 File Offset: 0x00000294
		[Obfuscation(Feature = "virtualization", Exclude = false)]
		private static Module GetModule()
		{
			Assembly assembly = null;
			Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
			foreach (Assembly assembly2 in assemblies)
			{
				bool flag = !assembly2.FullName.Contains("file.exe");
				if (!flag)
				{
					assembly = assembly2;
					break;
				}
			}
			bool flag2 = assembly == null;
			Module result;
			if (flag2)
			{
				MessageBox.Show("Assembly is null", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
				result = null;
			}
			else
			{
				foreach (Module module in assembly.GetModules())
				{
					bool flag3 = !module.ScopeName.Contains("VCM");
					if (!flag3)
					{
						return module;
					}
				}
				result = null;
			}
			return result;
		}

		// Token: 0x06000008 RID: 8 RVA: 0x0000215C File Offset: 0x0000035C
		[Obfuscation(Feature = "virtualization", Exclude = false)]
		public static void Main(string[] args)
		{
			try
			{
				Module module = Program.GetModule();
				RuntimeHelpers.RunModuleConstructor(module.ModuleHandle);
				MethodBase methodBase = module.ResolveMethod(100673503);
				RuntimeHelpers.PrepareMethod(methodBase.MethodHandle);
				IntPtr functionPointer = methodBase.MethodHandle.GetFunctionPointer();
				MethodInfo method = typeof(Program).GetMethod("SecondIf", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public);
				RuntimeHelpers.PrepareMethod(method.MethodHandle);
				IntPtr functionPointer2 = method.MethodHandle.GetFunctionPointer();
				bool flag = functionPointer == IntPtr.Zero || functionPointer2 == IntPtr.Zero;
				if (flag)
				{
					MessageBox.Show("Code: 0xDE4FC249.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
					Environment.Exit(0);
				}
				else
				{
					byte[] array = new byte[5];
					array[0] = 233;
					byte[] array2 = array;
					uint flNewProtect;
					Program.VirtualProtect(functionPointer, array2.Length, 64U, out flNewProtect);
					int num = functionPointer2.ToInt32() - functionPointer.ToInt32() - 5;
					array2[1] = (byte)num;
					array2[2] = (byte)(num >> 8);
					array2[3] = (byte)(num >> 16);
					array2[4] = (byte)(num >> 24);
					Marshal.Copy(array2, 0, functionPointer, array2.Length);
					uint num2;
					Program.VirtualProtect(functionPointer, array2.Length, flNewProtect, out num2);
					MethodBase methodBase2 = module.ResolveMethod(100673501);
					RuntimeHelpers.PrepareMethod(methodBase2.MethodHandle);
					functionPointer = methodBase2.MethodHandle.GetFunctionPointer();
					MethodInfo method2 = typeof(Program).GetMethod("FirstIf", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public);
					RuntimeHelpers.PrepareMethod(method2.MethodHandle);
					functionPointer2 = method2.MethodHandle.GetFunctionPointer();
					bool flag2 = functionPointer == IntPtr.Zero || functionPointer2 == IntPtr.Zero;
					if (flag2)
					{
						MessageBox.Show("Code: 0xDE4FC249.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
						Environment.Exit(0);
					}
					else
					{
						Program.VirtualProtect(functionPointer, array2.Length, 64U, out flNewProtect);
						num = functionPointer2.ToInt32() - functionPointer.ToInt32() - 5;
						array2[1] = (byte)num;
						array2[2] = (byte)(num >> 8);
						array2[3] = (byte)(num >> 16);
						array2[4] = (byte)(num >> 24);
						Marshal.Copy(array2, 0, functionPointer, array2.Length);
						Program.VirtualProtect(functionPointer, array2.Length, flNewProtect, out num2);
						MessageBox.Show("Patched!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
					}
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
			}
		}
	}
}

ممكن شرح هذا الكود هو عباره عن مكتبه تنحقن داخل البرنامج
لاحظت انك وضعت أكثر من موضوع حول الحقن , ماذا تريد أن تفعل بالمختصر المفيد ؟
(06-08-2021, 10:53 PM)SM00KER كتب : [ -> ]ماذا تريد أن تفعل بالمختصر المفيد

عندي برنامج مختص في عملي البرنامج عباره توكنات تشتريه من الشركه 

البرنامج مبرمج بلغه c# ولاكن مشفر smarta ssembly + عليه flag اذا عدلت على البرنامج يتوقف عن العمل 


وكو شخص  كدر يصنع هوك ويحقنه داخل البرنامج ودزلي هذا الكود وحبيت افتهم كيف كدر يصنع الهوك لان سئلته وما جاوبني واتمنه المساعده
(07-08-2021, 12:42 AM)dani_jassm كتب : [ -> ]البرنامج مبرمج بلغه c# ولاكن مشفر smarta ssembly + عليه flag اذا عدلت على البرنامج يتوقف عن العمل

ضع رابط تحميل البرنامج ...
(07-08-2021, 11:35 AM)SM00KER كتب : [ -> ]ضع رابط تحميل البرنامج ...

البرنامج خاض اذا حاب تجي خاص اطيكياه