-
Постов
27 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные lizzmack
-
-
1 час назад, ШАРИК сказал:
Лучше бы на с++ писал...
та лучше бы мне кто помог, почему у меня не работает наводка, когда вот , коорды бота программа норм выводит
Скрытый текст -
вот такое пишет при попытке вывести на экран позиции бота
Скрытый текстя такого прикола не понял если честно
-
1 минуту назад, ШАРИК сказал:
скорее всего цепочку указателей читаешь неправильно .
Скрытый текст#region -------Adresses--------
int MainPlayerBase = 0x509b74;
int [] MainPlayerMultiLvl = new int[] { 0x30 };
PlayerDataAddr MainPlayerOffsets = new PlayerDataAddr(0x10, 0x14, 0x4, 0xC, 0x8, 0xC8);
#region -------Enemy Adresses--------
List<PlayerData> EnemyAddresses = new List<PlayerData>();
int [] enOneMultiLvl = new int[] { 0x0, 0x30 };та не, мои корды норм считывает, программа их выводит абсолютно все. =\
-
Или я под вечер не соображаю, адрес шарика, и адреса с UC - тоже работают, но программа все еще ни в какую. не туда может тыкаю этими адресами?
адрес тыкаю вСкрытый текстprivate void SetupEnemyVars()
{
PlayerData En1 = new PlayerData();
En1.baseAddress = MyProcess[0].MainModule.BaseAddress.ToInt32() + 0x00110D90;
En1.multiLevel = enOneMultiLvl;
En1.offsets = MainPlayer.offsets;
EnemyAddresses.Add(En1);}
и что-то мне подсказывает, что я делаю не так.
-
да, мой адрес работает, пробежался раз 5 с перезапусками по смещениям у бота, его коорды стабильно показывает
-
О великие геймхакеры, колдуны и погроммисты. Взываю к вам.
8 часов головной боли при изучении англоязычных уроков по написанию Аимбота для игры assault cube, чтобы запустить и понять, что эта злючая программа не хочет брать в таргет ботов. Может кто подсказать, где я так упал лицом в грязь?
исходник прикладываю https://yadi.sk/d/qYr8j9mY3GTwFA
assault cube с офф сайта качал.оффсеты которые я нашел(может они чет неправильные, на всяк случай их тоже прикрепил):
Скрытый текстoffset = f8
0281A138
MainPlayerBase = 509b74
offset(f8-c8) = 30
points to 0281a230
playerBase+
4 =xpos
8 = z pos
c = ypos
10 =mousex
14 =mousey
c8 =Health
enemy coords
base "ac_client.exe"+0010F4F8
4,f8(30) = offsets0B807A10
-
2 минуты назад, what228 сказал:
Если что-то не получится советую пробовать в игре Assault Cube
Да-да, нашел канал Guided hacks, он именно на этой игре и показывает :). Правда сегодня уже умственно исчерпал себя, поэтому только теорию смотрю. завтра уже буду пытаться реализовывать практику
- 1
-
20 минуты назад, what228 сказал:
[sl_Saver] - Сохранить координаты
[sl_Loader] - Загрузить
[sl_X] - Координата X
[sl_Y] - Координата Y
[sl_Z] - Координата Z
[sl_Adder] - Число которое добавим к чему либо.
Инструкция которую я взял для скрипта работает с мобами и нашим игроком. В части BracnhSaver - мы сохраняем координаты нашего игрока в [sl_X]... В части BranchLoader - мы загружаем наши координаты и замещаем координаты мобов нашей сохраненной.Как я понял из видео что ты предоставил. Keng ( Михаил ) (Если не правильно указал извините) он взял указатель HP своего игрока и с него вышел на структуру где лежали данные не только его игрока но и остальных игроков ( ботов ). Через каждые 18байт лежали данные другого игрока.
да, все верно, из указателя на хп он вышел на структуру. В начале темы я точно так же это сделал.( ты еще спросил, зачем указатели)
насчет каждые 18 байт - это я понял. Сейчас думаю уже как реализовывается аим(все необходимые адреса нашел), и пошел исследовать англоязычные уроки. -
48 минуты назад, what228 сказал:
Вот к примеру Vacuum:
[ENABLE] aobscanmodule(sl_Vacuum,KFGame.exe,F3 41 0F 10 47 08 F3 0F 5C) alloc(newmem,$1000,"KFGame.exe"+656AB1) label(code) label(return) label(BranchVacuum) label(BranchLoader) label(BranchSaver) label(sl_X) label(sl_Y) label(sl_Z) label(sl_Adder) label(sl_Loader) label(sl_Saver) registersymbol(sl_Loader) registersymbol(sl_Saver) registersymbol(sl_X) registersymbol(sl_Y) registersymbol(sl_Z) newmem: sl_Saver: dd 0 sl_Loader: dd 0 sl_X: dd 0 sl_Y: dd 0 sl_Z: dd 0 sl_Adder: dd (float)100 BranchVacuum: cmp [sl_Saver],0 jne BranchSaver cmp [sl_Loader],0 jne BranchLoader jmp code BranchSaver: cmp [r15+B0],000033FA jne code cmp [r15+AC],00000000 jne code cmp [r15+F4],#22 jne code fld dword ptr [r15] fadd dword ptr [sl_Adder] fstp dword ptr [sl_X] fld dword ptr [r15+04] fstp dword ptr [sl_Y] fld dword ptr [r15+08] fstp dword ptr [sl_Z] mov [sl_Saver],0 jmp code BranchLoader: cmp [r15+AC],00000000 je code cmp [r15+F4],4 jne code fld dword ptr [sl_X] fstp dword ptr [r15] fld dword ptr [sl_Y] fstp dword ptr [r15+04] fld dword ptr [sl_Z] fstp dword ptr [r15+08] jmp code code: movss xmm0,[r15+08] jmp return sl_Vacuum: jmp BranchVacuum nop return: registersymbol(sl_Vacuum) [DISABLE] sl_Vacuum: db F3 41 0F 10 47 08 unregistersymbol(sl_Vacuum) unregistersymbol(sl_Loader) unregistersymbol(sl_Saver) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "KFGame.exe"+656AB1 "KFGame.exe"+656A81: 41 80 BE C0 00 00 00 01 - cmp byte ptr [r14+000000C0],01 "KFGame.exe"+656A89: 75 67 - jne KFGame.exe+656AF2 "KFGame.exe"+656A8B: 41 F7 86 F0 00 00 00 00 10 00 00 - test [r14+000000F0],1000 "KFGame.exe"+656A96: 75 53 - jne KFGame.exe+656AEB "KFGame.exe"+656A98: 85 C9 - test ecx,ecx "KFGame.exe"+656A9A: 75 4F - jne KFGame.exe+656AEB "KFGame.exe"+656A9C: F3 41 0F 10 0F - movss xmm1,[r15] "KFGame.exe"+656AA1: F3 0F 5C 4D A0 - subss xmm1,[rbp-60] "KFGame.exe"+656AA6: F3 41 0F 10 57 04 - movss xmm2,[r15+04] "KFGame.exe"+656AAC: F3 0F 5C 55 A4 - subss xmm2,[rbp-5C] // ---------- INJECTING HERE ---------- "KFGame.exe"+656AB1: F3 41 0F 10 47 08 - movss xmm0,[r15+08] // ---------- DONE INJECTING ---------- "KFGame.exe"+656AB7: F3 0F 5C 45 A8 - subss xmm0,[rbp-58] "KFGame.exe"+656ABC: F3 44 0F 5E E7 - divss xmm12,xmm7 "KFGame.exe"+656AC1: F3 41 0F 59 CC - mulss xmm1,xmm12 "KFGame.exe"+656AC6: F3 41 0F 59 D4 - mulss xmm2,xmm12 "KFGame.exe"+656ACB: F3 41 0F 59 C4 - mulss xmm0,xmm12 "KFGame.exe"+656AD0: F3 41 0F 11 8E 8C 01 00 00 - movss [r14+0000018C],xmm1 "KFGame.exe"+656AD9: F3 41 0F 11 96 90 01 00 00 - movss [r14+00000190],xmm2 "KFGame.exe"+656AE2: F3 41 0F 11 86 94 01 00 00 - movss [r14+00000194],xmm0 "KFGame.exe"+656AEB: 45 89 AE 94 01 00 00 - mov [r14+00000194],r13d "KFGame.exe"+656AF2: 49 8B 8E 68 02 00 00 - mov rcx,[r14+00000268] }
Фильтры на быструю руку. Репак от nemos.
Насчет видео:const DWORD plr_num_offset = 0x93CCB8 - Адрес библиотеки const DWORD plr_list_offset = 0x0089944C - Это адрес указателя const DWORD hp_offset = 0x214 - Это смещение const DWORD coords_offset = 0x214 - Это смещение
Если не так меня поправят.
Если я правильно понял скрипт - это сохранение-загрузка позиций?
У меня он не сработал( видать из-за фильтра ) когда ставил на сейвер 1 а потом на лоадер 1 - ничего не произошло
но в целом кажется понятно как это работает( если я правильно понял, это для игрока). Не совсем то, что я хотел узнать, наверное уже от круглосуточного лазанья в этой игре не смог правильно сформулировать вопрос. Мне свои координаты не очень нужны-то были, скорее коорды мобов, но кажется я почти понял как их записать теперь правильно в с++. За исключением адреса библиотеки - все еще не понял откуда он взялся. -
Только что, what228 сказал:
Что-то я туплю.. Но для чего ты искал указатель? Просто нашел координату поставил бряк посмотрел. Нашел инструкцию работающую с тобой ( ну или со всеми ). Дальше определяешь структуру на основе этой инструкции. Если инструкция работает только с тобой то фильтры не нужны если со всеми то фильтры пишешь. Можешь сказать что ты хочешь сделать?
пытаюсь понять откуда у михаила ремизова в видео https://www.youtube.com/watch?v=qzh6nL85SHs взялись оффсеты, если в предыдущей части он говорил только о смещениях в структуре между указателями на игроков, и внутри них на хп этих игроков. Ибо вот у него таблица , а через момент уже адреса.
Конечная цель у меня - получить оффсет мобов. а там уже с ним что-нибудь поделать. -
Нашел 2 указателя,
один с таким же адресом, что и хп
второй имеет иной адрес, указывает туда же, посмотрел по 10 указателям по этим же смещениям тоже коорды. Получается, что тот который отличается - это оффсет мобов?
Скрытый текст -
12 минуты назад, what228 сказал:
Не все адреса связаны в одну структуру. Ищи просто координаты через поиск. Float - неизвестное и для быстроты ищи Z координату ( Высота ). Встал повыше? Отсеиваешь значение увеличилось. Встал пониже? Отсеиваешь значение уменьшилось. И так пока не найдешь И да не стоит создавать новую тему. Ты мог в старой своей отписать
Насчет темы, я долго сомневался куда написать(в новую или старую тему), ведь, вопрос должен был бы соответствовать названию темы. Поэтому создал еще одну, с общим названием, куда, если что - напишу еще вопросы. Извиняйте.
Сейчас попробую отдельным поиском найти координаты. -
И снова приветствую!
Продолжал разбирать KF2, пытался сейчас освоить курс уроков Михаила Ремизова о создании есп.
Но вот наткнулся на тупик, не могу найти в структурах позиции (по x y z) себя, а так же мобов.(хотел попробовать аим)
Выходил на структуру игрока следующим образом:
нашел свое хп, указатель 1 уровня на него, добавил сам адрес указателя в таблицу.Скрытый текст
Затем посмотрел что делает указатель в памяти, открыл "disserect structure", пошел по смещению, которое есть на указателе(384) и нашел свое хп.
Скрытый текст
"Окей" подумал я, вроде правильно иду, искал float'ы позиций (вверх и вниз по структуре), не нашел, или неправильно искал. Дальше смотрю в другие указатели, где по идее должны быть данные о здоровье врагов, но везде 0( открыл первые 10 указателей подряд). Количество врагов - вообще не понял где искать. В общем запутался по-полной в поисках этих оффсетов координат. Подтолкните на правильную дорогу -
8 часов назад, what228 сказал:
Вот работает при получении урона:
[ENABLE] aobscanmodule(PlayerHealth,KFGame.exe,CC 07 89 06 48 83 C4 20) alloc(newmem,$1000,"KFGame.exe"+55CD0) label(code) label(return) newmem: cmp [rdi+310],8110C000 jne code cmp [rdi+434],00008387 jne code mov [rdi],64 jmp code code: mov eax,[rdi] mov [rsi],eax add rsp,20 jmp return PlayerHealth: jmp newmem nop nop nop return: registersymbol(PlayerHealth) [DISABLE] PlayerHealth: db CC 07 89 06 48 83 C4 20 unregistersymbol(PlayerHealth) dealloc(newmem)
Еще на пробу с таким работал но игра крашится не знаю почему:
[ENABLE] aobscanmodule(pl_HP,KFGame.exe,41 8B 00 41 89 02 C3) alloc(newmem,$1000,"KFGame.exe"+E8EBE) label(code) label(return) newmem: cmp [r8+310],8110C000 jne code cmp [r8+434],00008387 jne code mov [r8],64 jmp code code: mov eax,[r8] mov [r10],eax jmp return pl_HP: jmp newmem nop return: registersymbol(pl_HP) [DISABLE] sl_HP: db 41 8B 00 41 89 02 unregistersymbol(pl_HP) dealloc(newmem)
Думаю просто нужно еще фильтр накинуть и мб норм будет. Т.к. в самые первые моменты я с скриптом #2 ( mov eax,[r8] ) побегал 2 волны и не вылетало. Потом после первого вылета стало вылетать очень часто. Но не буду этим заниматься т.к. игра мне не понравилась извини.
Благодарю. многоразовая проверка для фильтра действительно избавила от вылетов,осталось найти значения, которые вообще не меняются, чем сейчас и попробую заняться.
-
UPD2: сумел найти инструкцию эту же инструкцию,вписал фильтр, вписал значение - РАБОТАЕТ.
но в силу того, что инструкция вызывается раз в ХЗ сколько времени - ненадежный скрипт получился, хз даже почему он вообще работает. Подозреваю, что мне нужна одна из первых 4 какая-нибудь, которая срабатывает много раз в секунду. но фильтр у меня там не получается написать( все значения меняются бешено быстро). Попробую полазить еще утром уже, поскольку уже хоть какой-то прогресс увидел. -
21 минуты назад, what228 сказал:
Скрипт примерное такой:
aobscanmodule(INJECT,KFGame.exe,CC 0F 6E 8A 84 03 00 00) // should be unique alloc(newmem,$1000,"KFGame.exe"+ACEE82) label(code) label(return) newmem: fld dword ptr [rdx+388] // Берем значение из [rdx+388] fstp dword ptr [rdx+384] // Помещаем значение из [rdx+388] в [rdx+384] code: movd xmm1,[rdx+00000384] jmp return INJECT: jmp newmem nop nop nop return: registersymbol(INJECT)
Для работы с double нужно делать так вроде:
aobscanmodule(INJECT,KFGame.exe,CC 0F 6E 8A 84 03 00 00) // should be unique alloc(newmem,$1000,"KFGame.exe"+ACEE82) label(Hp_Pl) label(code) label(return) label(ValueOnDouble) // Рандом название newmem: ValueOnDouble: dq(double)0 // Заместо 0 любое твое число Hp_Pl: fld dword ptr [ValueOnDouble] // Берем значение из [ValueOnDouble] fstp dword ptr [rdx+384] // И помещаем сюда code: movd xmm1,[rdx+00000384] jmp return INJECT: jmp Hp_Pl nop nop nop return: registersymbol(INJECT)
Возможно уже под вечер делаю что-то не так, но крестик на скрипте как не ставился - так и не ставится. Сейчас попробую заново найти эту инструкцию и проверить расположение
UPD: инструкция, на которую мне говорили писать - за 10 минут не появилась в отладчике. Подозреваю, она упорота. Остается писать фильтр для второй или четвертой, даже если значения в структурке меняются каждые пару минут. -
Скрытый текст
{ Game : KFGame.exe
Version:
Date : 2017-03-25
Author : ??????This script does blah blah blah
}[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
aobscanmodule(INJECT,KFGame.exe,CC 0F 6E 8A 84 03 00 00) // should be unique
alloc(newmem,$1000,"KFGame.exe"+ACEE82)label(code)
label(return)newmem:
mov dword ptr [rdx+00000384],(double)100 //на double остановился на момент копирования. по смещению 384 текущее здоровье, 388 - макс.
code:
movd xmm1,[rdx+00000384]
jmp returnINJECT:
jmp newmem
nop
nop
nop
return:
registersymbol(INJECT)[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
db CC 0F 6E 8A 84 03 00 00unregistersymbol(INJECT)
dealloc(newmem){
// ORIGINAL CODE - INJECTION POINT: "KFGame.exe"+ACEE82"KFGame.exe"+ACEE52: 45 0F B6 E0 - movzx r12d,r8l
"KFGame.exe"+ACEE56: 48 8B F2 - mov rsi,rdx
"KFGame.exe"+ACEE59: 48 8B E9 - mov rbp,rcx
"KFGame.exe"+ACEE5C: 48 85 D2 - test rdx,rdx
"KFGame.exe"+ACEE5F: 0F 84 C7 02 00 00 - je KFGame.exe+ACF12C
"KFGame.exe"+ACEE65: F6 82 E8 00 00 00 02 - test byte ptr [rdx+000000E8],02
"KFGame.exe"+ACEE6C: 0F 85 BA 02 00 00 - jne KFGame.exe+ACF12C
"KFGame.exe"+ACEE72: 48 8B 81 4C 02 00 00 - mov rax,[rcx+0000024C]
"KFGame.exe"+ACEE79: 48 85 C0 - test rax,rax
"KFGame.exe"+ACEE7C: 0F 84 AA 02 00 00 - je KFGame.exe+ACF12C
// ---------- INJECTING HERE ----------
"KFGame.exe"+ACEE82: 66 0F 6E 8A 84 03 00 00 - movd xmm1,[rdx+00000384]
// ---------- DONE INJECTING ----------
"KFGame.exe"+ACEE8A: 0F 57 C0 - xorps xmm0,xmm0
"KFGame.exe"+ACEE8D: 0F 5B C9 - cvtdq2ps xmm1,xmm1
"KFGame.exe"+ACEE90: 0F 2F C8 - comiss xmm1,xmm0
"KFGame.exe"+ACEE93: 0F 82 93 02 00 00 - jb KFGame.exe+ACF12C
"KFGame.exe"+ACEE99: 48 3B D0 - cmp rdx,rax
"KFGame.exe"+ACEE9C: 0F 84 8A 02 00 00 - je KFGame.exe+ACF12C
"KFGame.exe"+ACEEA2: 48 89 5C 24 50 - mov [rsp+50],rbx
"KFGame.exe"+ACEEA7: 33 DB - xor ebx,ebx
"KFGame.exe"+ACEEA9: 48 89 7C 24 58 - mov [rsp+58],rdi
"KFGame.exe"+ACEEAE: 33 FF - xor edi,edi
} -
5 минут назад, Dison сказал:
Надо писать так
newmem:
mov dword ptr [rdx+00000388],(float)100 - Например устанавливаем 100
code:
movd xmm1,[rdx+00000384]
jmp returnПопробовал разные типы переменных
float
double
int
#
скрипт все еще не реагирует на активацию. =\ (здоровье в 4 байта) -
2 минуты назад, Dison сказал:
забыл, указать, та инструкция, что с 1 адресом работала. Она вообще непонятно как вылезла. по сути, когда бьют, и играю - вылезают только первые 4.
UP:
сумел снова выявить данную инструкцию, но скрипт написанный для нее - даже не включается( ошибка где-то?)
Скрытый текстnewmem:
movd xmm1,[rdx+00000388]
code:
movd xmm1,[rdx+00000384]
jmp return -
5 минут назад, Dison сказал:
Попробуй так - cmp dword ptr [r8+сc],0000008C
Крашнуло(по калькулятору ввел свое значение с пересчетом на hex), + после перезапуска значение в смещении сс, которое было 0000008C сменилось на другое (000000F5) ,даже если не перезапускать игру, то значение в фиолетовых областях все равно меняется каждые несколько минут. Или я
-
Скрин инструкций
Скрытый текстпробовал нопить 3 и 4 инструкцию, отнимать 0 от текущего значения и писать максимальное в текущее. но из-за кривого фильтра все пока пустой труд был.
конкретно одной инструкции на здоровье гг я так и не увидел тут, поэтому сижу, сейчас список указателей делаю. -
6 минут назад, partoftheworlD сказал:
Ох ну и игру ты выбрал, она на UE написана.
Извините, не в курсах, с UE что-то не так?
Скрытый текстcmp dword ptr [r8+сc], #140
крашнуло
сейчас гляну что с другими инструкциями, хотя там все в списке работают более чем 8 адресов -
Здравия желаю, форумчане.
В деле геймхакинга зеленый, но пытался ковыряться в современных играх, а не в старых (сложнее - значит опыта в этом деле будет больше)
Конкретно в Killing Floor 2(steam-версия) столкнулся с проблемой написания фильтра свой\чужой
Исходя из уроков на канале gamehacklab[ru], для фильтра нужна строка со значениями, которые будут для меня одно, для всех остальных другое. т.е. выделяться фиолетовым.
Скрытый текстда не тут-то было, почти все "статичные" значения, по ходу игры меняются. Соответственно, каждый раз, когда брал любое из фиолетовых, сравнивал в скрипте
например
cmp dword ptr [r8+сc], 140
jne code
то игра вылетала уже сразу на этом этапе, даже не добавляя махинаций со значениями.
p.s. заодно интересно, как выйти на структуру оружия, если единственный адреc с патронами - экранный, или зашифрованый(не смог понять, но в код выше\ниже смотрел, нигде нет call'ов и xor, бряк на запись выводит указатель на тот же адрес, что у меня в таблице)
Перенес тему в соответствующий раздел (от MasterGH) -
В 15.03.2017в04:47, Garik66 сказал:
На самом деле там не сложно это сделать, я реализовал добавление одного уровня сразу в моде для этой игры The Hell, в самой Дьябле это сделать проще.
ЗЫ: На выходных запишу видео, если будет время или кто-то ещё не сделает это.
Оке, посижу пока в других играх, где нет такого выноса мозга с адресами.
Взлом Diablo II Lord of Destruction
in Статьи для новичков
Опубликовано · Изменено пользователем lizzmack
хай, видео оказалось полезным. Благодарю.
насчет задержки - я в этом вопрос очень толерантен, так как время штука такая,вроде есть, но на самом деле неделями его нет.