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

SnedS91

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

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

  • Посещение

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

    22

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

  1. SnedS91

    Need For Speed The Run

    Версия игры 1.1.0.0; версия трейнера 1.1; +1; дата создания 19.10.2012 Описание: Бесконечное нитро. Инструкция: 1. Запустить трейнер и игру; 2. Войти в режим гонки; 3. Нажать клавишу [Numpad 0] для активации/деактивации чита; Трейнер: Trainer_1.1_NFSR_1_1.7z [Fixed] - После прохождения нитро ставится в половину - Небольшая оптимизация производительности
  2. Решил дополнить AA-aobscan. Теперь, чтобы создать скрипт не нужно выделять код и искать уникальные байты, функция сделает все за нас, достаточно нажать по первой инструкции ПКМ (можно и выделить часть инструкций) и выбрать Create AA-aobscan Вот, собственно, и сама функция:
  3. Да я тоже заметил такую ошибку, нужно в плагине поменять функцию GetInfoInjection на эту:
  4. Итак, как я сломал hooktest.exe : Начало обычное, то есть поиск числа патронов. Здесь проще всего найти значение, один раз выстрелив, а потом перезарядить. Найдя нужное единственное значение, как обычно, ставим бряк на него (на доступ) и нажимаем перезарядку. Наблюдаем следующее: Видим, что с нашим адресом работает 99 раз аж 3 функции! проверим каждую из них: Посмотрев чуть выше первой функции, можно заметить вызов operator delete, что значит здесь идет перебор всех объектов с их удалением, так, значит должен быть и конструктор объектов. Следующие две функции как раз входят в структуру, напоминающую конструктор, причем выше можно заметить место где выделяется память, о чем говорит PUSH 00000190 и последующая функция call ebx, которую можно найти, проследив выше по коду что же пишется в ebx, а именно по адресу hooktest.exe+1028 - mov ebx,[hooktest.exe+209C] что это за функция, можно узнать по адресу, содержавшемуся в [hooktest.exe+209C] : функция создания новых объектов! А значит в нашем цикле создаются патроны и условием выхода из него, является число 18C (396) Дальше я разделил его на 4 (я всегда так делаю, т.к. такие числа часто встречаются в играх) и получил в результате 99! Значит можно добавить скрипт, меняющий число в условии.
  5. а на 1.3 выкладывать не стоит наверное - там практически то же самое, отличие только в получении количества объектов
  6. Вот, что нарыл по версии 1.4: 1) Тут стоит какая то защита на количество объектов: можно создать не более 24 объектов, исправляется скриптом: [ENABLE] TrainME.exe+147C: mov eax,[TrainME.exe+4110] nop nop TrainME.exe+14C9: mov edx,[TrainME.exe+4110] nop TrainME.exe+1502: mov edx,[TrainME.exe+4110] nop [DISABLE] TrainME.exe+147C: db 8B C2 C1 E8 1F 03 C2 TrainME.exe+14C9: db C1 E9 1F 8D 54 11 FF TrainME.exe+1502: db C1 E9 1F 8D 54 11 FF 2) Сам скрипт, создающий 100 объектов: [ENABLE] alloc(newMem, 512) label(exit) label(skip) label(createObj) label(m1) label(m2) newMem: pushfd pushad push [ebp+10] mov eax,[TrainME.exe+4110] mov ebx,#100 sub ebx,eax mov eax,ebx cmp eax,0 jl short skip call createObj skip: pop [ebp+10] popad popfd //-----Original-code------ call TrainME.exe+1730 //------------------------ jmp exit createObj: pushad push 20 call TrainME.exe+16C9 push 14 call TrainME.exe+1730 xor esi,esi add esp,08 cmp eax,esi je m1 fld dword ptr [TrainME.exe+3178] inc byte ptr [eax+04] fstp dword ptr [eax+0C] mov [eax+08],edi mov [eax],TrainME.exe+31A0 mov [eax+10],esi //тип звукового сигнала: esi - дзынь, 10 - ошибка jmp m2 m1: xor eax,eax m2: lea ecx,[ebp+10] push ecx mov ecx,TrainME.exe+410C mov [ebp+10],eax call TrainME.exe+1160 popad dec eax cmp eax,0 jge createObj ret TrainME.exe+1457: jmp newMem exit: [DISABLE] TrainME.exe+1457: call TrainME.exe+1730 dealloc(newMem) unregistersymbol(address)
  7. как я понял нужно сделать так, чтобы набралось определенное число объектов, а потом, при снятии скрипта, все должно адекватно уменьшаться с чередованием звуков... или я не так думаю
  8. Спасибо! Трейнми интересный получился (побольше бы таких) Жду следующих версий.
  9. Вот рабочий скрипт для 1.2: [ENABLE] // For Train ME by Coder from SnedS91 AOBSCAN(aobAddress, A1xxxxxxxx5068xxxxxxxx56FF15xxxxxxxx8B0Dxxxxxxxx83C40C5651 ) alloc(newMem, 512) label(exit) label(skip) label(address) label(createObj) label(m1) label(m2) registersymbol(address) newMem: pushfd pushad mov eax,[TrainME.exe+33DC] mov ebx,#100 sub ebx,eax mov eax,ebx cmp eax,0 jl short skip call createObj skip: popad popfd //-----Original-code------ mov eax,[TrainME.exe+33DC] //------------------------ jmp exit createObj: pushad push 20 call TrainME.exe+159D mov esi,[TrainME.exe+20D4] push 0C mov [ebp+10],eax call esi xor ebx,ebx add esp,08 cmp eax,ebx je short m1 mov [eax+08],00000040 jmp short m2 m1: xor eax,eax m2: mov [TrainME.exe+33C4],eax mov eax,TrainME.exe+33C4 call TrainME.exe+1440 popad dec eax cmp eax,0 jg short createObj ret aobAddress: address: jmp newMem exit: [DISABLE] address: mov eax,[TrainME.exe+33DC] dealloc(newMem) unregistersymbol(address)
  10. небольшую поправку нужно написать, чтоб при ошибке не создавался скрипт: function OnItemMenuGenerateAAWithAOBSCANClick(sender) local script = GetScriptAOBSCAN() if (script ~= nil) then local newTableEntry = AddAARecord(script, 'New AOBSCAN-Script ') OpenAAEditor(newTableEntry) end end Я хочу дополнить шаблоном для быстрого нопа выделенных функций: NopCodeTemplate = [[ [ENABLE] ->>address: ->>nops [DISABLE] ->>address: ->>originalCode //->>comment ]] function GetNops(strAddress, length) -- return originalCodeString, originalBytesString, nopsString local sumBytes = 0 local originalCodeString = "" local originalBytesString = "" local address = strAddress local countBytes = 0 repeat countBytes = getInstructionSize(address) lineDissassemble = disassemble(address) extrafield, opcode, bytes, address = splitDisassembledString(lineDissassemble) sumBytes = sumBytes + countBytes address = address..'+'..countBytes originalCodeString = originalCodeString..opcode.."\r\n" originalBytesString = originalBytesString..bytes until (sumBytes >= length) ---------------nops----------------- local nopsString = "db " local nopsCount = length if (nopsCount>0) then for i = 1, nopsCount do if i == nopsCount then nopsString = nopsString.."90" else nopsString = nopsString.."90 " end end end return originalCodeString, originalBytesString, nopsString end function GetScriptAANop() local script = NopCodeTemplate local originalCode = '' local originalBytes = '' local extra = '' local nops = '' local address = math.min(dv_address1, dv_address2) local stop = math.max(dv_address1, dv_address2) local length = stop + getInstructionSize(stop) - address local strSignature = GetFullSignature(address, length) originalCode, originalBytes, nops = GetNops(address, length) local baseAddress = getNameFromAddress(address) script = string.gsub(script,"->>address", baseAddress) script = string.gsub(script,"->>originalCode", originalCode) script = string.gsub(script,"->>comment", originalBytes) script = string.gsub(script,"->>nops", nops) script = string.gsub(script,"->>NscriptCount", scriptCount) return script end function OnItemMenuGenerateAANopClick(sender) local script = GetScriptAANop() local newTableEntry = AddAARecord(script,'New Script') OpenAAEditor(newTableEntry) end AddItemMenuInMemoryViewForm('* Create AA NOP', 'Ctrl+Shift+N', OnItemMenuGenerateAANopClick, OnSelectionTracker)
  11. Tremy, бряки работать не будут, я это уже говорил (пост #13). И про cesrv я тоже писал, что это официальный скрипт с сайта CE, просто я его переименовал для удобства (пост #14).
  12. Стандартно она практически на всех официальных прошивках, а на модифицированных (например, Cianogen) это все вырезано. Поэтому некоторым пользователей приходится ставить похожие программы.
  13. Вот и недостающее звено цепочки! Работа через usb. В принципе все то же самое, что из поста #14, только с небольшими изменениями, а именно: скачать и установить на андроид-устройство программу Wired Tether запустить программу и нажать на значок usb идем в параметры адаптера (сетевые подключения на XP) должно появится новое соединение Идем в настройки этого соединения и меняем его IP и маску на 172.20.23.253 / 255.255.255.252, а остальное делаем пустыми (это ВАЖНО! иначе инет пропадет) Применяем изменения, а дальше все как обычно - запускаем настроенный терминал, а в СЕ, нажав кнопку сеть, в поле Discowered servers будет IP нашего устройства, то есть 172.20.23.254 (если ничего не меняли). И не пугайтесь что он отличен от IP настроенного соединения! Порт так же не меняется. При такой настройке все должно работать Приятного взлома!
  14. Спасибо! Согласен, что неудобно, но это стоит того..Можно память просматривать, например.. И было бы гораздо легче, если бы СЕ был в виде приложения на андроиде Что интересно, приложение/игру нет необходимости сворачивать, в этом плюс, да и заморозка тоже неплохая вещь иногда. И еще, к примеру, была одна игра, работающая реалтайм (деньги постоянно увеличивались), то есть нельзя паузу ставить, получилось найти только в СЕ (сначала поиск неизвестного значения, потом увеличилось/уменьшилось) Так что интересная штука для исследования..
  15. Нашел более удобный способ подключения к СЕ, теперь adb не нужен! (работать должно на любом телефоне c ARM6 и выше!) Что для этого надо: Android Terminal Emulator (если у кого еще не установлен); Скрипт cesrv из предыдущих постов или по ссылке (в папке /data в памяти телефона и с правами 777) p.s. я переименовал скрипт для удобства. Рутованый телефон; Соединение через wifi роутер (желательно знать ip телефона). Сначала идем в терминал, заходим в Настройки -> Команды запуска. Дописываем с новой строки: su ./data/cesrv Закрываем терминал, устанавливаем соединение wifi. Запускаем снова терминал и должны увидеть приглашение типа: &s=0xbeaeeb9c main=0x9938 CEServer. Waiting for client connection socket=3 bind=0 listen=0 IdentifierThread active Все, телефон настроен, можно свернуть терминал! Запускаем свою игру и переходим к СЕ. СЕ нужно повесить на одно физическое ядро процессора (если проц многоядерный), для этого вызываем диспетчер задач, переходим во вкладку процессы, ПКМ по СЕ -> Задать соответсвие... Делаем так, чтобы стояла только одна галочка напротив любого из CPU (иначе поиск работать не будет!) Далее все как обычно: Выбор процесса -> Сеть В Host пишем свой ip, Port оставляем без изменений (52736). Если все делали правильно, то должны увидеть список процессов на android. Теперь можно спокойно искать значения в памяти! На этом все, удачного взлома!
  16. Забыл, еще нужно назначить права скрипту. Для этого можно, находясь в директории data, воспользоваться командой chmod 777 cesrv Кстати, тестировал на Galaxy Ace (arm6) на удивление подключился! Но пока что поиск прерывается так же.. думаю надо поиграться с настройками СЕ.. Нашел в чем ошибка Поиск наконец заработал! Необходимо условие: СЕ должен использоваться только одним ядром процессора! (в случае многоядерных компов) то есть надо сделать так, чтобы СЕ висел только на одном ядре (это можно сделать в диспетчере задач, если Win8) либо сторонней прогой, типа CPU-Control.. если и тогда не будет работать, то в настройках поиска СЕ указать размер буфера 4Кб (но у меня и с 512кб хорошо ищет) Вроде все работает, пошел проверять игры.. Проверил на игре Monster Shooter, работает на ура, деньги взломались с первого поиска! Даже заморозка работает! Жаль отладчик не прикрутить..
  17. Попробуй воспользоваться автоматическим поиском указателей в СЕ
  18. Моя попытка подключения СЕ к андроиду. Требования: телефон должен быть ARM7! (я тестировал на Galaxy S2) root обязателен! наличие wifi-роутера (т.к. через кабель не получилось пока что) установленные драйвера от телефона Качаем архивчик с ADB и распаковываем в удобную папку. Ставим на телефон adbWireless из архива. Нужно скопировать скрипт cesrv из архива в директорию /data телефона (я использовал Root Explorer) На компьютере в зависимости от системы запускаем соответственно: cmdXP.exe - (у кого Windows XP) cmd7.exe - (у кого Windows 7, с правами администратора) На телефоне: запускаем adbWireless и нажимаем большую зеленую кнопку. Снизу должны высветиться ip адрес телефона и порт. На компьютере: в консоли пишем adb connect 192.168.0.101:5555 (вместо 192.168.0.101 ставим свой ip телефона.) Должны увидеть надпись connected to 192.168.0.101:5555 Хорошо! Пишем далее (последовательно) adb shell su cd data ./cesrv Должны получить что-то типа: &s=0xbeaeeb9c main=0x9938 CEServer. Waiting for client connection socket=3 bind=0 listen=0 IdentifierThread active С консолью закончили, переходим на компьютер. Открываем СЕ, нажимаем кнопку выбора процесса, нажимаем Сеть. В поле Host пишем свой IP телефона (у меня 192.168.0.101), поле Port оставляем без изменений! (т.е. 52736) Жмем Connect и если все правильно сделали получим список процессов на андроиде Это пока что все, к чему я пришел... Если что нибудь получится найти, я опишу способ.. Удачи!
  19. Вот, держи а не скачивает, потому что зарегиться надо
×
×
  • Создать...

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

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