-
Постов
207 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Laziz
-
-
Я давным давно ощупывал его, вроде нормальный бровзер, но толкового на нем ничего не сделал. Могу попробовать сделать.
-
В 16.05.2017 в 03:41, Blackdots сказал:
Зачем? Это тоже самое, что скачать библиотеку которая умеет выводить MessageBox, изихук - лишнее
Да, он умеет выводит MessageBox но, он в целом внедряет .NET в программу а эта не только MessageBox.
Больше дело меньше разговора как говорится, кто та хукнул уже DX9, DX10, DX11 или DX12?
-
10 минут назад, partoftheworlD сказал:
меня кидает на https://www.red-gate.com/ при переходе на pinvoke.net, походу все выкупили домен.
вчера была так
-
Вчера захожу на pinvoke.net, а там не хорошие слова написаны и нужной инфы нет. И так на всех страницах.
Хотелось бы узнать мнение знающих, как взломали и зачем взломали?
Интерес усугу[CENSORED]ется тем что pinvoke написана на ASP.NET, а я активно изучаю эту сферу.
-
16 минут назад, roma91212 сказал:
Чистый с# приветствуется))
Ну, не совсем чистый C#, в прочем почитай про них сам. Называется
1. "EasyHook". (для инъекции библиотеки написанный на C# в любую программу)
2. "SharpDX" (типо аналог DirectXа на C#)
Я делал хук на примере Chameleon Wallhack по видео Keng`a только на C# с помощью этих библиотек, получилось довольно не плохо.
-
В 23.04.2017 в 08:39, roma91212 сказал:
Итак,хотелось бы затронуть такую тему как Хук функций на c#. Соответсвенно со сканером сигнатур.
Но главный вопрос каким образом можно найти code cave, и сделать переадресацию на свою кастомную функцию?
Только c#, без плюсов)))
А готовый библиотекой пользоваться приветствуется?
-
На C# есть еще "uint" может он поможет.
-
public static byte[] GetBytesInt32(string argument) { argument = argument + "0"; return BitConverter.GetBytes(int.Parse(argument)); } .... byte[] TKBytes = GetBytesInt32("999"); ....
-
В 09.05.2015в11:13, Garik66 сказал:
Сейчас связка - "70" пролетела - 15 самолётов (7 и 8). КРАСОТА!!!
Сфоткал бы.
-
-
11 час назад, Razi сказал:
Приведу пример: Нужно через редактор изменить начальное оружие персонажа на другое.
Начальное оружие персонажа находится в адресе(offset) 9380 в Hex, в игровом файле Namemenu.mnuЕго каждый раз надо менять? почему один раз поменял и не все?
- 1
-
2 минуты назад, gmz сказал:
взять fasm или nasm, создать окно, в окне создать "radio button" на все пушки, добавить название пушек, написать функцию патча файла.. легко xD
Почему именно fasm или nasm? для отпугивание читателей и автора?
- 2
-
В 05.01.2016в02:26, DarkPower2 сказал:
Уже все перепробовал, что только мог... После выполнения в CE пишет неверный адрес перехода...
Я думаю проблема в том, что caveAddress = 0000000011223344 (пример), a addressFrom = 000007FED32A22DA (тоже).
Помогите решить эту проблему!
И при выполнении замененного кода возвращает тоже на неверный адрес.
Проблема в том что VirtualAllocEx выделяет адрес слишком далеко от стартового адреса, из за этого "jmp адрес" не возможно, потому что шаг перехода уже не влезает на 4 байта. Что бы выделит адрес по ближе надо в ручную искать Cave адрес. Если нужно будет подробнее объясню.
-
Приведи код где jmp адрес высчитывается
случайно не такой?
string Jmp_Call(long iCave, long jumpFrom, long iNext, bool jc) {// Возвращает байт при прыжке / Вызов cave из исходного местоположения. string ins = GetIns(BitConverter.GetBytes(iCave - jumpFrom - 5)); for (var i = 5; i < iNext - jumpFrom; i++) ins += "90"; return jc ? "E9" + ins : "E8" + ins; }
-
2 часа назад, Recpec158 сказал:
трейнер определил при запуске какая у тебя разрядность и загрузил тот указатель или адрес,
Разрядность операционный системы:
Environment.Is64BitOperatingSystem //или if (IntPtr.Size == 8) { //x64 } else { //x32 }
Разрядность процесса:
тут посмотри Тынц
- 1
-
4 часа назад, Xipho сказал:
Насчет скорости работы форума - у кого-то еще, кроме meft подобные проблемы возникают?
Скорость у меня нормально.
Желаю скорейшего выздоровление!!!
-
-
Я правильно переделал код? Чтобы в маске было не два символа "xx", а один "x".
вроде да!
- 1
-
Тут идея не в поиске по маске, а в том, что если байт в сигнатуре равен -1(0xFF), то это и есть "неопределенный" байт, который может меняться.
Согласен что 0xFFы может быт меняется, но и другие тоже может меняться. Не зря же придумали маску.
-
for (int i = End; sIn[Pool + i] == sFor[i] | sFor[i] == 0xFF; i--)// Если (смещение + длина сигнатуры равна i-евому байту сигнатуры) или (i-евый байт сигнатуры равен -1),то цикл вычитается
Но сигнатуру таким способом не находит. Я пробовал и копаться в откладчике c#, но так и не понял в чем проблема.Где тут по меняющем сигнатурам (по маскам) поиск так и не понял, или идея в другом?... не понятно
- 1
-
Да
Нету скайпа ?
камеры и микрофона нету
- 1
-
Если что вот оно
З.Ы. Мне кажется не фига не быстрый это... Хотя особо не проверял
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;namespace temp1{ class AOBScan { [DllImport("kernel32.dll")] public static extern IntPtr OpenProcess(ProcessAccessFlags processAccess, bool bInheritHandle, int processId); [Flags] public enum ProcessAccessFlags : uint { All = 0x001F0FFF, Terminate = 0x00000001, CreateThread = 0x00000002, VirtualMemoryOperation = 0x00000008, VirtualMemoryRead = 0x00000010, VirtualMemoryWrite = 0x00000020, DuplicateHandle = 0x00000040, CreateProcess = 0x000000080, SetQuota = 0x00000100, SetInformation = 0x00000200, QueryInformation = 0x00000400, QueryLimitedInformation = 0x00001000, Synchronize = 0x00100000 } //ReadProcessMemory [DllImport("kernel32.dll")] protected static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] buffer, uint size, int lpNumberOfBytesRead); //VirtualQueryEx [DllImport("kernel32.dll")] protected static extern int VirtualQueryEx(IntPtr hProcess, IntPtr lpAddress, out MEMORY_BASIC_INFORMATION lpBuffer, int dwLength); [StructLayout(LayoutKind.Sequential)] protected struct MEMORY_BASIC_INFORMATION { public IntPtr BaseAddress; public IntPtr AllocationBase; public uint AllocationProtect; public uint RegionSize; public uint State; public uint Protect; public uint Type; } protected List<MEMORY_BASIC_INFORMATION> MemoryRegion { get; set; } protected void MemInfo(IntPtr pHandle) { IntPtr Addy = new IntPtr(); while (true) { MEMORY_BASIC_INFORMATION MemInfo = new MEMORY_BASIC_INFORMATION(); int MemDump = VirtualQueryEx(pHandle, Addy, out MemInfo, Marshal.SizeOf(MemInfo)); if (MemDump == 0) break; if ((MemInfo.State & 0x1000) != 0 && (MemInfo.Protect & 0x100) == 0) MemoryRegion.Add(MemInfo); Addy = new IntPtr(MemInfo.BaseAddress.ToInt32() + (int)MemInfo.RegionSize); } } protected IntPtr Scan_withOutMask(byte[] sIn, byte[] sFor) { int[] sBytes = new int[256]; int Pool = 0; int End = sFor.Length - 1; for (int i = 0; i < 256; i++) sBytes[i] = sFor.Length; for (int i = 0; i < End; i++) sBytes[sFor[i]] = End - i; while (Pool <= sIn.Length - sFor.Length) { for (int i = End; sIn[Pool + i] == sFor[i]; i--) if (i == 0) return new IntPtr(Pool); Pool += sBytes[sIn[Pool + End]]; } return IntPtr.Zero; } protected IntPtr Scan_withMask(byte[] sIn, byte[] sFor, bool[] mask) { int[] sBytes = new int[256]; int Pool = 0; int End = sFor.Length - 1; for (int i = 0; i < 256; i++) sBytes[i] = sFor.Length; for (int i = 0; i < End; i++) sBytes[sFor[i]] = End - i; while (Pool <= sIn.Length - sFor.Length) { for (int i = End; equal(sIn[Pool + i], sFor[i], mask, i); i--) if (i == 0) return new IntPtr(Pool); Pool += sBytes[sIn[Pool + End]]; } return IntPtr.Zero; } bool equal(byte sIn, byte sFor, bool[] mask, int maskNumber) { if (mask[maskNumber]) { return true; } else if(sIn == sFor) { return true; } return false; } /// <summary> /// Поиск по байтам. Если маски нету то, там где "mask" пишем null /// </summary> /// <param name="Pattern"></param> /// <param name="mask">Маска или null</param> /// <param name="handle"></param> /// <returns></returns> public IntPtr AobScan(byte[] Pattern, string mask, IntPtr handle) { MemoryRegion = new List<MEMORY_BASIC_INFORMATION>(); MemInfo(handle);//сюда записываем handle процесса if (string.IsNullOrEmpty(mask)) // если маски нету { for (int i = 0; i < MemoryRegion.Count; i++) { byte[] buff = new byte[MemoryRegion[i].RegionSize]; ReadProcessMemory(handle, MemoryRegion[i].BaseAddress, buff, MemoryRegion[i].RegionSize, 0); IntPtr Result = Scan_withOutMask(buff, Pattern); if (Result != IntPtr.Zero) return new IntPtr(MemoryRegion[i].BaseAddress.ToInt32() + Result.ToInt32()); } } else { bool[] maskBool = new bool[mask.Length/2]; for (int i = 0; i <= mask.Length - 2; i += 2) { maskBool[i/2] = mask.Substring(i, 2) == "xx" ? true : false; } for (int i = 0; i < MemoryRegion.Count; i++) { byte[] buff = new byte[MemoryRegion[i].RegionSize]; ReadProcessMemory(handle, MemoryRegion[i].BaseAddress, buff, MemoryRegion[i].RegionSize, 0); IntPtr Result = Scan_withMask(buff, Pattern, maskBool); if (Result != IntPtr.Zero) return new IntPtr(MemoryRegion[i].BaseAddress.ToInt32() + Result.ToInt32()); } } return IntPtr.Zero; } }}
AOBScan aobscan = new AOBScan(); int address; int pID = 4180; IntPtr handle = AOBScan.OpenProcess(AOBScan.ProcessAccessFlags.All, false, pID); address = (int)aobscan.AobScan(new byte[] { 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0x45, 0x08, 0x85, 0xC0, 0x74, 0x0F, 0x50, 0x6A, 0x00, 0xFF, 0x35, 0x08, 0x30, 0x88, 0x76, 0xFF, 0x15, 0x2C, 0x40, 0x88, 0x76, 0x8B, 0x45, 0x0C, 0x85, 0xC0 }, "8Bxxxx8Bxx8Bxxxx85xx74xxxx6AxxFFxxxxxxxxxxFFxxxxxxxxxx8Bxxxx85xx", handle); или address = (int)aobscan.AobScan(new byte[] { 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0x45, 0x08, 0x85, 0xC0, 0x74, 0x0F, 0x50, 0x6A, 0x00, 0xFF, 0x35, 0x08, 0x30, 0x88, 0x76, 0xFF, 0x15, 0x2C, 0x40, 0x88, 0x76, 0x8B, 0x45, 0x0C, 0x85, 0xC0 }, null, handle); если нету маски
- 2
-
Где то в 2013 году? Слушай при попытке открыть исходник появляеться куча-масса ошибок
проект открываешь?
-
C++, D3D9 SDK
Слушай а не ты ли создал MEMORY_Scaner ?
Да, было такая программа.
Hook Functions c#
in Высокоуровневое программирование
Опубликовано
Можно пруфы посмотреть если ты так уверенно говоришь.