تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
hook dll c#
#1
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);
			}
		}
	}
}

ممكن شرح هذا الكود هو عباره عن مكتبه تنحقن داخل البرنامج
أعضاء أعجبوا بهذه المشاركة : Lauda937
#2
لاحظت انك وضعت أكثر من موضوع حول الحقن , ماذا تريد أن تفعل بالمختصر المفيد ؟
أعضاء أعجبوا بهذه المشاركة : rce3033
#3
(06-08-2021, 10:53 PM)SM00KER كتب : ماذا تريد أن تفعل بالمختصر المفيد

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

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


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

ضع رابط تحميل البرنامج ...
أعضاء أعجبوا بهذه المشاركة : rce3033
#5
(07-08-2021, 11:35 AM)SM00KER كتب : ضع رابط تحميل البرنامج ...

البرنامج خاض اذا حاب تجي خاص اطيكياه
أعضاء أعجبوا بهذه المشاركة :


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم