Перейти к содержанию

MasterGH

Ветераны
  • Постов

    2 999
  • Зарегистрирован

  • Победитель дней

    129

Весь контент MasterGH

  1. Paper Clip Trainer Spy позволит пошпионить за трейнером. Я думаю можно это сделать без угрызения совести, если ты откажешься от создания своего трейнера на основе того как работает трейнер автора.
  2. Если хочешь больше шансов чтобы ответили(может быть и я помогу), то желательно потрудиться для этого: 1) В CE скопировать участок кода прервавшейся инструкции для тамера гонки и сгенерировать и привести сигнатуру из CE 5.6 RUS. 2) В CE скопировать участок кода прервавшейся инструкции для штрафных секунд и сгенерировать и привести сигнатуру из CE 5.6 RUS 3) Приаттачить два сейв-файла перед началом миссий в которых будут срабатывать инструкции из пункта 2 и пункта 3.
  3. Я был бы не против. Я видел на некоторых сайтах эти карты. Но там были не флаги, а красные точки. Вот точки мне больше нравятся. Одни больше, а другие меньше и можно было видеть откуда больше всего заходили по большим точкам. Я посмотрю, если это несложно сделать, то может быть я сделаю и если Xipho не будет против. Просто у него наверняка мало времени на это.
  4. Это самая простая проверка на, то что код после инъекции не изменился и его можно спокойно отменить. На самом деле это понадобилось только в одной игре - сделать инъекцию на кол-во золота для покупки войск перед загрузкой карты и последующим боем. У игры выгружались и подгружались dll-ки перед началом боя. Соответственно после боя невозможно отменить инъекцию, т.к. сигнатуры не существует.
  5. Случайно наткнулся на примеры исходников CS, которые пытаются восстановить для модов. Вот интересный пример weapon.cpp: /*** * * Copyright (c) 1996-2002, Valve LLC. All rights reserved. * * This product contains software technology licensed from Id * Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. * All Rights Reserved. * * Use, distribution, and modification of this source code and/or resulting * object code is restricted to non-commercial enhancements to products from * Valve LLC. All other use, distribution, or modification is prohibited * without written permission from Valve LLC. * ****/ #include "weapons.h" void CBasePlayerWeapon::FireRemaining( int &iShotsFired, float &flShootTime, BOOL bIsGlock ) { m_iClip--; if ( m_iClip < 0 ) { m_iClip = 0; iShotsFired = 0; shootTime = 0.0; return; } float flSpread; int iPenetration; int iBulletType; int iDamage; float flRandeModifier; BOOL bFireParam; unsigned short usEvent; BOOL bEventParam1; UTIL_MakeVectors( pPlayer->pev->v_angle + pPlayer->pev->punchangle ); if ( bIsGlock ) { flSpread = 0.05; iPenetration = 1; iBulletType = 1; iDamage = 18; flRandeModifier = 0.90; bFireParam = TRUE; usEvent = m_usGlock18; bEventParam1 = m_iClip ? FALSE : TRUE; } else { flSpread = m_flBurstSpread; iPenetration = 2; iBulletType = 12; iDamage = 30; flRandeModifier = 0.96; bFireParam = FALSE; usEvent = m_usFamas; bEventParam1 = FALSE; } Vector vecDir = pPlayer->FireBullets3( m_pPlayer->GetGunPosition(), gpGlobals->v_forward, flSpread, 8192.0, iPenetration, iBulletType, iDamage, flRandeModifier, m_pPlayer->pev, 1, m_pPlayer->random_seed ); PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), usEvent, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pPlayer->pev->punchangle.x * 10000000, pPlayer->pev->punchangle.y * 10000000, bEventParam1, FALSE ); m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); m_pPlayer->pev->effects |= EF_MUZZLEFLASH; iShotsFired++; if ( iShotsFired != 3 ) flShootTime = gpGlobals->time + 0.1; else flShootTime = 0.0; } Для любознательных советую скачать файлы из SVN. Обратить внимание на структру игры: игрков, оружия. Как добавляется оружие, как добавляются патроны, как создаются игроки и т.п. Хорошие примеры динамически создаваемых объектов, примеры сложных указателей...
  6. Я все же предлагаю регистрировать пользователей по двум критериям. 1) Пользователи, которые желают выложить свою хотя бы одну статью изначально показав её. 2) Пользователи, которые желают выкладывать не менее двух чужых статей. Также я думаю администрации срочно нужен человек или несколько, который бы помогал выкладывать статьи. А то многие любят читать и учиться делать читы, а помогать администрации выкладывать статьи кто кто будет?! И я хотел бы чтобы Xipho как главный администратор дал разрешение кому-то побыть модератором, тем кто часто приходит к нам на сайт. Чтобы удалять спамные сообщения и разрешать пользователям публиковать сообщения если они прошли проверку. Также будет возможноть редактировать посты пользователей (не администраторов), убирать старые теги с прошлого форума... Те кто хотел бы быть модераторами, могут написать тут (т.к. мне интересно узнать кто бы хотел). Я могу предложить M4K и Ливу, т.к. часто вижу их на форуме. ___ Любая поддержка администрации укрепит развитие сайта gamehacklab.ru.
  7. Она может быть и будет. Но размер будет около 15 мб (это писал Дарк Байт)
  8. Там всё очень просто по поводу здоровья. 1) Нашли динамический адрес здорвья и один зелёный. Он зелёный, но всё равно будет меняться из-за пакера. 2) Поставили в CE бряк на запись и пошли под обстрел 3) Прервались на двух инструкциях (обе инструкции в одной функции) 62079BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3 62079C39 - F3 0F11 A1 98100000 - movss [ecx+00001098],xmm4 ecx - объект героя. Функция типа: __int64 __fastcall t_player__RecalcGeneralHealth(int _ECX) { ... 62079BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3 цикл чтения 5 частей тела (ECX+C7C+4*N) = здоровье частитела, где N от 1 до 5 (ECX+C7C+4*0) = общее здоровье ecx+0x00000C7C = адрес суммые здоровья от частей тела game.dll+79BFD - 8D 91 7C0C0000 - lea edx,[ecx+00000C7C] // смотрим внимательно за edx game.dll+79C03 - 56 - push esi game.dll+79C04 - 0FB6 F0 - movzx esi,al game.dll+79C07 - 83 FE 05 - cmp esi,05 game.dll+79C0A - 77 11 - ja game.dll+79C1D game.dll+79C0C - FF 24 B5 - jmp dword ptr [esi*4] game.dll+79C0F - 48 - dec eax game.dll+79C10 - 9C - pushfd game.dll+79C11 - 07 - pop es game.dll+79C12 - 62 0F - bound ecx,[edi] game.dll+79C14 - 28 C1 - sub cl,al game.dll+79C16 - EB 08 - jmp game.dll+79C20 game.dll+79C18 - 0F28 C2 - movaps xmm0,xmm2 game.dll+79C1B - EB 03 - jmp game.dll+79C20 game.dll+79C1D - 0F28 C3 - movaps xmm0,xmm3 game.dll+79C20 - F2 0F10 22 - movsd xmm4,[edx] <<<< а вот обращение к адресам здоровья, сделаем инъекцию сздесь! game.dll+79C24 - 83 C0 01 - add eax,01 game.dll+79C27 - F3 0F59 E0 - mulss xmm4,xmm0 game.dll+79C2B - F3 0F58 A1 98100000 - addss xmm4,[ecx+00001098] game.dll+79C33 - 83 C2 04 - add edx,04 game.dll+79C36 - 83 F8 06 - cmp eax,06 game.dll+79C39 - F3 0F11 A1 98100000 - movss [ecx+00001098],xmm4 game.dll+79C41 - 7C C1 - jnge game.dll+79C04 ... 62079C39 - F3 0F11 A1 98100000 - movss [ecx+00001098],xmm4 } Сама инъекция: [ENABLE] aobscan(_faddress,f2xxxxxx83xxxxf3xxxxxxf3xxxxxxxxxxxxxx83xxxx83xxxxf3) alloc(_newmem,2048) label(_returnhere) label(_originalcode) _newmem: mov [edx],(float)1 _originalcode: movsd xmm4,[edx] add eax,01 jmp _returnhere _faddress: // 62079C20 = game.dll+79C20 jmp _newmem nop nop _returnhere: [DISABLE] aobscan(_faddress,9090f3xxxxxxf3xxxxxxxxxxxxxx83xxxx83xxxxf3) _faddress-5: movsd xmm4,[edx] add eax,01 dealloc(_newmem) //Alt: db F2 0F 10 22 83 C0 01 По эскпериментам __int64 __fastcall t_player__RecalcGeneralHealth(int _ECX) передаётся только главный герой. Но если ещё кто-то будет бессметрным, то напишите или сами сделайте фильтр.
  9. live_4_ever, спасибо за исходник. Memory.cs содержит всё что может пригодиться для начальных экспериментов: подключение к процессу, чтения и запись разных данных. Например, так будет запись байт включающих чит здоровья: public partial class frmMain : Form { private Memory _memory; private int _unlimitedHealth = 0x4B8F14; private int _unlimitedRescueHealth = 0x467EEB; //... private void cbxHealth_CheckedChanged(object sender, EventArgs e) { if (cbxHealth.Checked) _memory.WriteBuffer(_unlimitedHealth, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 }); else _memory.WriteBuffer(_unlimitedHealth, new byte[] { 0xF3, 0x0F, 0x11, 0x48, 0x34 }); } } Мои комментарии для тех кому интересно: У него есть достоинства и недостатки. Достоинства: 1) Класс Memory.cs имеет неплохой описанный стартовый функционал для экспериментов. Недостатки: 1) Постоянно лицезреть в исходниках непонятные байты без ассемблерного скриптинга. 2) Двиг трейнера построен так, что жёстко привязывается к определённой версии игры и автор собирается для каждой версии игры делать трейнер. 3) Исходники требуют значительных доработок для совершенства близкого к идеалу. Пока самое близкое к идеалу это Lua-скриптинг в Cheat Engine....
  10. По прежнему пока нет времени. Пока нашёл самый простой исходник по инициализации устройства.
  11. Спасибо. Очень было интересно посмотреть на эту схему. В ней даже есть текст кода для обработчиков игровых событий. Молодцы, разработчики, у них было меньше временных затрат с перекомпиляцией. Я там увидел по 822 строчке к примеру:
  12. MasterGH

    Тестирование CE 6.1

    Вы даже не представляете как далеко пошёл Дарк Байт. Он "прикручивает" настоящую IDE к Cheat Egine по существующим компонентам. А это предвестник того, что трейнеры начнут штамповать LUA скриптами. Которые будут сверхмалых размеров по сравнению с автономными трейнерами написанными даже на ассемблере. Но радоваться ещё рано, т.к. это дело на 100% не работает пока. Например, Control_SetCaption и Control_GetCaption пока не работают. Но обработчики события работают в связке с IDE, но не генерируются автоматически в LUA-консоле. Так же можно было видеть что добавлена подсветка. Как бы там не было, грядут большие перемены в создании трейнеров - сверх малых размеров.
  13. Если два или более бряков срабатывают один за другим, то можно быстро найти «развилку» Сначала ставим оба бряка и делаем так чтобы один из них сработал. Затем пускаем трейс по ретам в OllyDbg (ctrl+F12) Вновь прервыемся и отпускаем игру по F9. В итоге мы останавливаемся в месте развилки. На рисунке сначала прервались на нажатии кнопки, а после проведенных действий мы оказались на развилке – начале пути до инструкции записи значения маны в адрес маны. Таким образом мы быстро определили ветку кода, которую необходимо исследовать внутрь. Иногда это бывает очень полезно.
  14. Для кому интересно как использовать поток в скриптах CE alloc(mycode,4096) CREATETHREAD(mycode); mycode: mov eax,[gamex.dll+123456] mov ebx,[eax+4c] mov [eax+48],ebx push #1000 call sleep jmp mycode В данном случае здесь заморозка с частотой в 1-ну секунду. А вот мой пример скрипта для GTA SAN Andreas. Скрипт заполняет данные структуры игрока один раз //mov [[00B6F3B8]+n*1c+5a8]],1 //mov [[00B6F3B8]+n*1c+5ac]],1 //где n =[1..12] [ENABLE] alloc(tred,200) registersymbol(tred) label(x1) tred: push eax push ecx push ebx xor ecx,ecx mov eax,[00B6F3B8] add eax,5a8 x1: inc ecx imul ebx,ecx,1c mov [eax+ebx],1// mov [[00B6F3B8]+n*1c+5a8]],1 - в обойме mov [eax+ebx+4],1// mov [[00B6F3B8]+n*1c+5ac]],1 - общие патроны cmp ecx,c jne x1 pop ebx pop ecx pop eax call GetCurrentThread ret createthread(tred) [DISABLE] dealloc(tred) Инструкцию call GetCurrentThread я ипользовал для корректного получения указателя на поток (хотя думаю можно было бы сделать иначе, но пока я не исследовал это дело). GetCurrentThread кладёт в eax указатель на данный поток и ret поток закрывает.
  15. Поиск инструкций по шаблону Чего-то я не обращал внимание на полезную возможность искать ассемблерные инструкции. В отладчике найдите нужное меню. А вот пример ввода. После чего будет поиск всех инструкций подходящих по заданному шаблону.
  16. Вопрос снят. Подробности позже. Удалось собрать проект CE
  17. Эта ссылка ничем не поможет. Это инсталлятор на lazarus-0.9.28.2-fpc-2.2.4-win32.exe. Старая версия IDE, старый компилятор. Cheat Engine не скомпилируешь.
  18. Cheat Engine (RUS) Ассемблерные инструкции Курс для новичков
  19. Тут надо ставить бряк на запись и следить каким образом идёт запись восстановленного значения.
  20. У меня идеи по структуризации тем и разделов по Cheat Engine модернизациям. Но сначала необходимо разобраться с тем как компилить Cheat Engine. Пока мне не удалось в этом разобраться если кто сможет, то пишите. Для начала следующая информация. Для компиляции текущего CE требуется Lazarus IDE версии не ниже v0.9.29, рекомендуется v0.9.31. Также требуется последний компилятор Free Pascal. Я предполагаю, что Dark Byte (DB) постоянно следит за последними обновлениями исходники этих инструментов. Компилирует их и затем компилирует ими Cheat Engine. Если он это делает не часто, то по крайне мере может сделать в любой момент и тогда новые исходники CE 6.xx мы уже не скомпилим и будем искать решение вместо того чтобы найти его сейчас. Это означает, что нам. 1. Этап 1) Скачиваем и пользуемся TortoiseSVN создав папку SVN в ней будет другие SVN-папки: 2) Закачиваем с помощью TortoiseSVN SVN-cheatEngine по ссылке http://ce.colddot.nl/svn 3) Закачиваем SVN-freePascalCompiler по ссылке http://svn.freepascal.org/svn/fpc/ 4) Закачиваем SVN-IDELazarus по ссылке http://svn.freepascal.org/svn/lazarus Таким образом всегда можно получать новые исходники. Я не знаю, возможно вы не захотите скачивать некоторые папки, но это уже Ваше решение. 2. Этап. Потребуется компилировать все инструменты. Пока у меня получилось скомпилировать freepascal. Позже я напишу как это сделал. Но у меня не получилось собрать Lazarus. После его компиляции, настроек необходимых путей можно будет компилировать Cheat Engine 6.0... Также есть здесь обсуждение. А вообще мне не очень нравится этот гемморой на самом деле, но что делать - придётся.
  21. Я с тобой согласен. Я написал эту тему, т.к. мне было самому интересно и на этих инструментах была написана CE 6.0. Соответственно модификации делать можно этими инструментами. Кстати автономные трейнеры прикрученные к CE6.0 будут весит около 15 мб - писал Дарк байт. Но если "обрезать" выше описанными способами, то думаю чуть больше 2 метров. В CE 5.6 версиях трейнер весил ~800 кб с картинкой. ИМХО разница большая. Но LUA-скрипты в таблицах CE - это сверх компактный трейнер, который будет работать если установлена CE. ...Также стоит учитывать, что эти инструменты гибче Дельфи, они свободные и их можно продавать и другие могут продавать, то что продают первые - такая вот лицензия.
  22. Скачайте последний кряк с плейграунда иначе запаритесь с защитой. Как админ вынужден напомнить, что вся ответсвенность за его использование лежит за вами. У меня один раз игра подвисла, после того как я сделал иньекцию CE. Но игра была в оконном режиме и я с помощью клавиатуры убил процесс CE 6,0- всё закрылось - не пришлось перезагружаться. Возможно, это заморочки CE 6.0 и следует покапаться в её настройках. В следующий раз я сделал иньецию на дельнги снова и затем тут же выключил и больше у меня ничего не зависало. Сигнатуру кода не привожу, т.к. некогда было её делать. Инструкция "game.dll"+F251: срабатывает, когда пользователь лезет в инвентарь и в этот момент у него становиться 9999999 песо. Но они отнимаются, когда пользователь что-то покупает. [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) newmem: mov [eax+00000CC4],#9999999 originalcode: mov eax,[eax+00000CC4] exit: jmp returnhere "game.dll"+F251: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) "game.dll"+F251: mov eax,[eax+00000CC4] //Alt: db 8B 80 C4 0C 00 00 Перейдём к читу здоровья. В вашем Xenuse Есть два адреса здоровья: Один статический, а другой динамический. Если на динамический постравить бряк, то прервёмся здесь (у вас может быть другая dll-ка) game.dll+79BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3 game.dll+79BFB - 33 C0 - xor eax,eax game.dll+79BFD - 8D 91 7C0C0000 - lea edx,[ecx+00000C7C] game.dll+79C03 - 56 - push esi game.dll+79C04 - 0FB6 F0 - movzx esi,al game.dll+79C07 - 83 FE 05 - cmp esi,05 game.dll+79C0A - 77 11 - ja game.dll+79C1D Здесь нужно посмотреть по ecx начало структуры. В сканере памяти ввести поиск адресов от ecx, до где-то ecx + 0x1098+0x2000 = ecx + 0x3098; Вам нужно закупиться всякими шприцам взломав деньги. И наблюдать например за ногами. Сложность поставьте лёгкую чтобы боты стреляли по ногам чаще. Ну так вот поставьте поиск в MHS значения float. Всегда делайте первый отсев: уменьшилось, увеличилось, не изменилось(если уверены) и + дополнительный отсев по промежутку от 0,0 до 1,0. Возможно, можно так найти адрес (у меня к сожалению оврал со временем и в выходные тоже не будет) -------- Ещё один способ поставить условнй бряк в CE на (см. выше) game.dll+79BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3 Процесс игры должен остановиться. Зделайте трейс на 5000 или более инструкций (если что-то подвиснет, то минут через 10 отвиснет, не вздумайте это делать в полноэкранном режиме) Посмотрите вверх по коду как значение попадает в xmm3. Изучите инструкции SIMD. 1) Можете следить есть ли выше по коду этот xmm3 (я к сожалению его не увидел на три уровня вверх). Если нет заглядывайте в выше стоящие call-ы ставя условные бряки (если не знаете как делать то не делайте этого) - я это не успел сделать. 2) Я точно не помню, по моему есть инструкция которая крутит регистры XMM как барабан вверх или вниз смещая их.Значит от инструкции game.dll+79BF3 - F3 0F11 99 98100000 - movss [ecx+00001098],xmm3 нужно искать либые инструкции которые поместили значение в xmm3. Обращайте внимание на циклы. Потому что в xmm3 - это явно результат цикла. 3) Соледующие действия тоже могут помочь. Сделайте так чтобы game.dll (она запротокчена старфорсом) распаковалась в памяти игры (просто запустите её). Сохраните её дамп и проанализируйте IDA + hexarrays. Испольузуйте Petools Могут быть и другие подходы, которые более быстро помогут, но у меня не было времени изучить это дело. Пока всё.
  23. Я могу предположить с точностью до 90% как я там схема, хотя я не видел этой игры даже на скриншотах, кроме того который ты привёл. Скорее всего, общее здоровье солдата состоит из суммы значений. Левая и правая нога и рука, тело, голова.. Также защита на голове - шлем, броня на теле. Если действительно там такая "схема здоровья", то я бы постарался отсеивать значения 4 байта с точкой когда меняется состояние от нормального к плохому и наоборот определённой части тела например туловища. Я бы взял бы побольше аптечек и попадал бы изредка под обстрел. Это самый простой вариант выйти на адреса здоровья. Они могут находится скорее всего рядом друг с другом, а могут и на каком-то расстоянии... В прошлой какой-то игре я нашёл адрес полоски здоровья и вышел по коду вверх на цикл где складывалось состояние каждой части тела и обмундирования. Так что вот так вот.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.