Ac1d
-
Постов
310 -
Зарегистрирован
-
Посещение
-
Победитель дней
22
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Ac1d
-
-
Нормально, а вот это
Добавляем класс по имени ingect.
Подключаем имена:
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Globalization;
Начало класса:
class Inject
{
protected Process[] Proc;
protected bool iActive;
protected List<IntPtr> Cave = new List<IntPtr>();
Обработка процесса:
public void GetProc(string Process_Name)
{
if (!iActive)
{
Proc = Process.GetProcessesByName(Process_Name.Replace(".exe", ""));
iActive = Proc.Length != 0;
}
try
{iActive = !Proc[0].HasExited;}
catch{iActive = false;}
if (!iActive) MessageBox.Show("Process Not Found!", "Get Process");
}
Api:
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, int dwSize, uint flAllocationType, uint flProtect);
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
private static extern bool VirtualFreeEx(IntPtr hProcess, IntPtr lpAddress, byte dwSize, uint dwFreeType);
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesRead);
[DllImport("kernel32.dll")]
public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesWritten);
Чтение и Запись.
private byte[] rBytes(int iAddress, int iSize)
{
byte[] buff = new byte[iSize];
if (iActive)
ReadProcessMemory(Proc[0].Handle, (IntPtr)iAddress, buff, iSize, 0);
return buff;
}
private void wBytes(int iAddress, byte[] pBytes)
{
if (iActive)
WriteProcessMemory(Proc[0].Handle, (IntPtr)iAddress, pBytes, pBytes.Length, 0);
}
public byte ReadByte(int iAddress)
{
byte[] buff = new byte[1];
if (iActive)
ReadProcessMemory(Proc[0].Handle, (IntPtr)iAddress, buff, 1, 0);
return buff[0];
}
выделяем новое память:
Скрытый текст
Освобождаем выделенн.. память:
Скрытый текст
Скрытый текст
Инекция кода:
Скрытый текст
Один раз добавить в класс inject и всё? Можно делать сколько влезет функций????
Я имею ввиду #Region "Allocate"
-
-
NEMO, патроны, магазины... Что ты конкретно хочешь сломать то? Сами пули заряженые в пушку? (Чит No reload) или колличество пуль в магазине? (Infinite ammo). Если и то и то, то для этих значений две инструкции будет.
Может я конечно излишне дотошный ,но мне все же хочется сделать так чтобы после включения тренера колличество пуль оставалось не изменным . т.е. если в магазине 15 вкл тренер то и 15 осталось пока не отключил.
Тут Nop в помощь... Как я понимаю если записать 99, то индикатор пуль либо пропадает, либо вылазит за пределы рамок.
-
Извините за вопрос, я не шарю в этом. Вобщем я так понял всё записывается в игру через указатели, ок. А как тогда быть с патронами? Искать указатель для каждой пушки? Если в СЕ записал в инструкцию 99 и не паришься...
-
Вот NOP'ом ты просто в лучшем случае заморозишь число и оно не будет меняться, а если нужно записать 99, то ищи другие инструкции
-
ACID, нет разницы - указал ты конкретное число или будет браться тоже самое число только с какого-нибудь регистра.
Я этой строчки не понял, но всё равно я остаюсь при своих методах...
NEMO, add [esp+20]#1 - Тут утеряна запятая add [esp+20],#1
И вообще посоветую найти другую инструкцию, чтобы записать (mov) допустим 99 и не париться
-
Делаем Aobscan:
Сразу к делу. Допустим есть у вас нужный скрипт и на него нужно повесить Aobscan. Идём в Memory View, на любой иструкции кликаем правой кн. мыши и выбераем пункт Go to adress. Копируем из скрипта адрес инструкции, например "nfs.exe"+1224F5 и вставляем его в поле для ввода в окошке Go to adress, нажимаем Ок. Вы перейдёте к вашей инструкции, далее выделите вашу инструкцию левой кн. мыши, зажмите клавишу Shift и отсчитайте от неё вниз 5 инструкций. Отсчитали? Теперь держа Shift клацните на пятую инструкцию. Итого вместе с вашей инструкцией получится 6 выделенных. Далее не снимая выделение нажмите правую кн. мыши и выберите Copy to clippboard --> Bytes. Надеюсь у вас получилось. Далее откройте блокнот и вставьте туда скопированное нажатием Ctrl+V. В блокноте будет 6 строчек такого вида:
XXX+376F - 68 DC7D4001
XXX+3774 - 64 A1 00000000
XXX+377A - 50
XXX+377B - 64 89 25 00000000
XXX+3782 - 83 EC 58
XXX+3785 - 53Приведите их к такому виду:
68 DC 7D 40 01 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53Я надеюсь вы поняли что я сделал. ОБЯЗАТЕЛЬНО должно быть по 2 цифры и между ними отступ - 01 02
Далее идём в Memory View --> Tools --> Lua Engine, появляется окно с двумя строками, в нижнюю бьём такой код:
sl = AOBScan("ХХ ХХ ХХ ХХ ХХ");
if(sl == nil) then
print("No code found!");
else
j = stringlist_getCount(sl);
print("Found:",j);
for i = 1, j do
print(stringlist_getString(sl,i-1));
end
object_destroy(sl);
endВместо XX вставляем наши байты:
sl = AOBScan("68 DC 7D 40 01 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53");
if(sl == nil) then
print("No code found!");
else
j = stringlist_getCount(sl);
print("Found:",j);
for i = 1, j do
print(stringlist_getString(sl,i-1));
end
object_destroy(sl);
endИ жмём Execute, программа задумалась............ Но не зависла, ждём...
В Output в конце концов должна будет появиться надпись:
Found: 1
12345678 - ничего не напоминает? Неет?!Идём в Memory View и смотрим адрес нашей инструкции из скрипта - 12345678 - 8B 74 24 08 - mov esi,[esp+08], совпадает? Ура, мы нашли правильные проверочные байты!
Далее идём к нашему скрипту, на который будем вешать AOBScan и адаптируем под мой пример:
[ENABLE]
alloc(newmem,2048)
label(ammo)
label(returnhere)
registersymbol(ammo)
aobscan(aob_ammo,68 DC 7D 40 01 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58 53) Естественно сюда вставляем наши проверочные байты.
newmem:
mov [esi+00000140],#100
mov eax,[esi+00000140]
jmp returnhere
aob_ammo:
ammo:
jmp newmem
nop
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
unregistersymbol(ammo)
ammo:
mov eax,[esi+00000140]
//Alt: db 8B 86 40 01 00 00Вместо ammo пишем что угодно.
Ну вот вы сделали скрипт заряженый проверочными байтами
Автор статьи - Ac1d
Автор lua скрипта для проверки - Akama
Автор скрипта-болванки - Ac1d
- 4
-
Я люблю конкретно писать #числа.
-
[ENABLE]
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
newmem:
inc edx // увеличивается значение edx на 1.
//Можно написать add edx. Только тогда нужно указывать на сколько увеличивать.
//Например: add edx,63. Если значение float надо указать (float)63.
//Только писать на сколько увеличивать, надо в шестнадцатеричной системе счисления (hex).
//В этом может помочь калькулятор переключенный в инженерный вид.
originalcode:
mov edx,[esp+20]
mov [eax+14],edx
exit:
jmp returnhere
"CryGame.dll"+141F53:
jmp newmem
nop
nop
returnhere:
[DISABLE]
"CryGame.dll"+141F53:
mov edx,[esp+20]
mov [eax+14],edxНемного от себя. Как мне показалось логичнее будет увеличивать (inc) значение в регистре (esp) со смещением +20, то есть inc [esp+20]
Так же если у вас число число с точкой (float), то написав add [esp+20],(float)63 у вас ничего не выйдет. Правильнее будет так: fadd [esp+20], если же всё равно что то хотите добавить, то add [esp+20],#1234567890 НО, Число будет заоблачное. И не обязательно писать на сколько прибавить (add), т.е add [esp+20] - число, патрон допустим 123 будет становиться в два раза больше при выстреле - 123 выстрел, 246, выстрел, 369...
-
Она её и использует, пишите свои скрипты с Aobscan'ом и будет вам счастье.
-
[ENABLE]
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)
newmem:
mov [esp+20],(float)99 - Запись в иструкцию Nнного значения делается под строчкой newmem: И командой mov делается запись, без dword ptr.
originalcode:
mov edx,[esp+20]
mov [eax+14],edx
exit:
jmp returnhere
"CryGame.dll"+141F53:
jmp newmem
nop
nop
returnhere:
[DISABLE]
"CryGame.dll"+141F53:
mov edx,[esp+20]
mov [eax+14],edx -
Ты посмотрю и математику гулял
-
Версия игры 1.2, дата создания 12.04.2012, 9 функций Версия трейнера 1.1
~Поправил интерфейс
~Исправил баги и накинул новых функций
Функционал:
1 - Здоровье (Отключайте функцию когда душите последнего босса Саймона)
2 - Без перезарядки
3 - Стамина
4 - Беск. предметы (Морфин итд)
5 - Убийство с одного удара (Теперь точно все умирают с одного удара/выстрела)
6 - Прицел при движении/стрельбе не разъезжается (В комбинации с предметом расширяется)
7 - Быстрый огонь
8 - Тупые враги
F12 - Активация расширенного режима прыжков (Вы сами в состоянии регулировать высоту прыжка)
Space - Расширенные прыжки
- 3
-
Кто ж тебе скажет в каком режиме будет играть
-
- 1
-
Запусти СЕ, мол если не продлить, то Next scan будет недоступна
-
А с каких таких пор CE стала лицензионной? На сайте пустота...
-
Некий помощник для данной игры, делает прицел крестиком, для повышения точности игрока, больше ничего не даёт. НЕ ЧИТ
Выкладываю от старого ника - limera1n
- 1
-
Установи семёрку X86 лучше, а игра для взлома тупая, я с ней ковыялся
-
The Saboteur Trainer +16, Дата создания: 13.03.2012
~Изменил интерфейс
Numpad 1 - Режим бога(высота, взрывы не страшны)
Numpad 2 - Бесконечные патроны/гранаты
Numpad 3 - Бесконечная контрабанда
Numpad 4 - Немцы не бьют тревогу по пустякам
Numpad 5 - Немцы за вами не гоняются
Numpad 6 - Убийство с одного удара/выстрела
Numpad 7 - Прицел при стрельбе не разъезжается
Numpad 8 - Никто из людей не может стрелять кроме вас
Numpad 9 - Слом машины с одного удара/выстрела
Numpad / - Улучшеный режим маскировки (немцы вас увидят только вплотную)
Numpad * - Rapid fire
Numpad minus - Замедлить машины
5 - Телепорт к главному убежищу
6 - Телепорт к барыге
7 - Телепорт к гаражу
8 - Телепорт на пик Эйфелевой башни
- 2
-
В Ce 6.1 также и в других версиях, идём в settings --> hotkeys и ставим ноткей на pause the selected process
-
На сколько мне известно, эта игра не flash. Если и flash, то ищите в Artmoney неизвестное 8байт или в CE double. И как вариант ещё float в CE в Artmoney 4 байта с точкой.
-
~Added: Teleporter
Чё то забыл за него))
- 2
-
Для решения проблемы с убеганием адресов используется AobScan, а с юнитами принцип как для GTA
Иньекция Своего Кода На Vb
in Высокоуровневое программирование
Опубликовано
Хорош, взял))