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

Жажда Знаний

Пользователи
  • Постов

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

  • Посещение

Весь контент Жажда Знаний

  1. У меня есть Вопрос. Можно ли стековое значение применять как фильтр свой/чужой ? Как стековое значение Правильно записывать в скрипт и как записать стековое значение если значение находится в многоуровневом указателе, Записывать его в оригинале или как то реструктуризововать ? Можно ли Сделать свой фильтр свой/чужой не меняя все поле структуры написанием 2мя разветленными фильтрами, сначала отталкиваясь от оригинального значения затем вписывая свое значение, Возможно ли такое ?
  2. Написал через Mov mov [esp+14],#20 // урон mov [esp+24],#6 // уронmov esi,[esp+14]mov esi,[esp+24]mov [ebp-34],esifild dword ptr [ebp-34]jmp returnНо Можно написать это как то покрасивей ? Например с динамической сменой урона,Удар- увеличилось , Удар- поменьше урон ARM4ND0: С тегом кода стало покрасивее.
  3. Можешь небольшой пример написать Про Fpu инструкции, а то пока мне это еще не знакомо.
  4. Keng,если я нашел В стеке Адрес урона ( 0165F27C [esp+14] ), то как мне тогда записать (esp+14) в эту инструкцию ( fild dword ptr [ebp-34] ) ??
  5. Это не Он Лайн игра, Это От PS2- "Alien Hominid". Просто беру их из за того что с ними проще и быстрее работать чем с PC играми. Адреса со смещениями меняются Постоянно от уровня к уровню, не меняются только инструкции. Трассировка адресов не помогла. Действующая инструкция это которая работает с гранатами по записи ((с оружием только инструкция на доступе и остальных загружаемых в нее Групп адресов)), от Адр.Гранат с реструктуризации вышел на кол-Во жизней,, эти два смещения не меняются. Если взять какое нибудь для Сравнения(фильтра), поле структуры и написать фильтр на Id оружие, так что бы Менялось само оружие а не все поле структуры по смещению, как это написать ? ( mov eax,[ecx] ) Оружие находится на 0м смещении. Keng, Как найти Инструкцию меняющую уровни ? По какому методу. И можно ли в трассировке стека найти параметры игрока и оружия ?
  6. Скажите Пожалуйста, у меня такой Вопрос. В игре После каждого уровня меняется Смещение на Id оружия и патронов. Возможно ли сделать так, что бы найти постоянное смещение оружия и оно не менялось от смены уровня ? Вышел на статическую структуру по стеку (esp) которая постоянно загружает параметры игрового мира и оружия. Можно ли В ней как то определиться и выйти на постоянное статическое смещение Оружия. Если Возможно то Как ?
  7. Да, как раз я и анализировал подструктуры и находил нужный адрес, но как использовать смещение если оно в каждой подструктуре..? Если правильно понял то надо использовать смещение указателя подструктуры ? Работу со стеком не совсем понимаю, анализировать его надо саму трассировку или весь стек ?
  8. Да. Я про это в самом начале писал, что структуру брал с верхних регистров. Про большие структуры я имел в виду напримере игра "OMERTA" :адрес 31DB1737 А при бряке регистров можно выделить наиболее приближенный к нему 3BCD21A4 Как проблематично вычеслить смещение
  9. Спасибо, но когда то я уже ее читал. Немного довел скрипт до работы, нашел подходящее поле сравнения, [ecx+1c],(float)50 и [ecx+34],00000001. Почему разные смещения , потому что с разных регистров, все рабочие. А вот как быть если очень большая структура ?
  10. Сделал Скрипт По твоему Примеру. Получилось в двух вариантах : Скрипт работает на главного героя и второй на всю команду. Искал не совсем ID игрока а просто какое нить поле структуры, Получилось так newMem:mov esi,ecxfld dword ptr [esi+04]cmp [esi+928],(float)350jne Testjmp returnHere Test:mov [esi+194],(float)80 // Cheatersmov [esi+144],(float)80 // Kriticall Killmov [esi+924],(float)60 // SpeedPunchjmp returnHere DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:jmp newMemreturnHere: [DISABLE] 2й Вариант На всю команду newMem:mov esi,ecxfld dword ptr [esi+04]cmp dword ptr [esi+10],00000001je Testjmp returnHere Test:pushad <<<<< // вот без сохранения регистров игра вылетает, На скрипте Coldown тожеmov [esi+314],(float)50 // Cheatersmov [esi+2c4],(float)50 // Kriticall Killmov [esi+aa4],(float)30 // SpeedPunchfmul [esi+924] //Test XP //mana push [esi+13c] как бы сделать так что бы мана начислялась по единицы постоянно и не превышала рамки установленного лимита не более 99? mov [esi+188],0 // Резервация маны popadjmp returnHere DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:jmp newMemreturnHere: [DISABLE]
  11. ENABLE]alloc(newMem, 64)label(Test)label(returnHere) newMem:mov esi,ecxfld dword ptr [esi+04]//cmp [ecx+198],(float)1000 // Cheaters // Эти две строчки - лишние, их можно//cmp [ecx+148],(float)1000 // Kriticall Kill // убрать.cmp [esi+928],(float)350 // SpeedPunch // Правильнее использовать esi, а не ecx. // потому-что это в Вашем случае совпало, je Test // что начало структуры лежит и в ecx и в // esi. В другой раз такого может и не бытьjmp returnHere Test:mov [esi+194],(float)60 // Хитрость, %крит,уронаmov [esi+144],(float)80 // %критического нанесения mov [esi+924],(float)80 // скорость Атакиjmp returnHere DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:jmp newMemreturnHere: [DISABLE]DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:mov esi,ecxfld dword ptr [esi+04]dealloc(newMem)
  12. Незнаю возможно вы и правы но скрипт полностью рабочий, проверял не один раз с переходом на локации, перезагрузкой уровня и игры.Еще хотел спросить, можно ли по этим сравнениям этого скрипта сделать бессмертие, значение этих адресов не меняется.
  13. спасибо. Немного доделал скрипт да рабочего состояния. Дело еще в том что никто не учел то что нельзя ставить число для сравнения а затем менять его. Скрипт сработает только раз затем смещения просто поменяются, Вот что получилось: [ENABLE]alloc(newMem, 2048)label(Test)label(returnHere) newMem:mov esi,ecxfld dword ptr [esi+04]cmp [ecx+198],(float)1000 // Cheaterscmp [ecx+148],(float)1000 // Kriticall Killcmp [ecx+928],(float)350 // SpeedPunchje Testjmp returnHere Test:mov [esi+194],(float)60 // Хитрость, %крит,уронаmov [esi+144],(float)80 // %критического нанесения mov [esi+924],(float)80 // скорость Атакиjmp returnHere DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:jmp newMemreturnHere: [DISABLE]DragonAge2.AK::MemoryMgr::GetPoolName+81EA4:mov esi,ecxfld dword ptr [esi+04]dealloc(newMem)
  14. Спасибо вам ребята за помощь, Действительно вы правы. Я просто сомневался в том что для сравнения, значение можно ставить как (float)-100. Как оказалось что попросту я тупил. Вот рабочий скрипт newMem:fld dword ptr [esi+04]mov ecx,[esi+14]cmp [esi+314],(float)-100 // Cheaterscmp [esi+2c4],(float)-100 // Kriticall Killcmp [esi+aa4],(float)-100 // SpeedPunchje Testjmp returnHere Test:pushadmov [esi+314],(float)200 // Cheatersmov [esi+2c4],(float)200 // Kriticall Killmov [esi+aa4],(float)200 // SpeedPunchpopadjmp returnHere DragonAge2.AK::MemoryMgr::GetPoolName+81EA6:jmp newMemnopreturnHere: [DISABLE] DragonAge2.AK::MemoryMgr::GetPoolName+81EA6:fld dword ptr [esi+04]mov ecx,[esi+14] dealloc(newMem) Конечно он еще на стадии доработки Но вот еще что после проверок и перезагруза игры стало меняться смещение на Хитрость, но не всегда. С чем это связано?
  15. Я знаю, об этом и писал, что работает и без прыжков и на вашем примере. Опять же вы не понимаете то ли читаете не внимательно. Скрипт Значения меняет нужные но игра крашится когда переходишь на экран глав.героя. Возможно что присутствуют левые адреса и надо писать фильтр через указатель. Так думаю Тогда число сравнения будет (float)-100, только в каком виде его записывать, в hex ?
  16. newMem:fld dword ptr [esi+04] mov ecx,[esi+14] cmp [ecx],aa4 // (float)-100 jne Test jmp returnHere Test: push eax mov [ecx+314],(float)200 // Current mov [ecx+2c4],(float)200 // Kriticall Kill mov [ecx+aa4],(float)200 // SpeedPunch pop eax jmp returnHere Работает и с ecx и esi одинаково Что я делаю не так ?
  17. Нет, ты не прав. [Esi+04]если делать аналис по ней то каждый адресс с нее будет оканчиватся на +04, а это ошибка. Ecx находится выше [esi+04]mov [ecx+aa4],(float)100 fld dword ptr [esi+04] mov ecx,[esi+14] jmp returnHere Работает и без условных прыжков. Но игра вылетает когда переходишь в экран характеристик героя, значит присутствуют левые адресса, думаю решение это: 1е- писать фильтр чере3 указатель и 2е-писать в него нужные смещения
  18. Обьясняю почему, потому что идет выгрузка регистров в память процесса с самого нижнего регистра (eip). Эти регистры содержат одинаковую структуру отличающиеся друг от друга смещениями. Почему ebx потому что он похож на найденый адресс т.е на начало стр-ры, начало структуры оказалось в есх, который загружается в инструкцию (esi+04)находящиеся до самой инструкции(выше). Вот и всё. Над остальным я еще работаю, как будет готово напишу.
  19. Я уже устал описывать это куда уж более детально, неужели вам это не понятно, или может не совсем 3накомо. К тому же от вас больше встречаешь банальной лени тем что просто отписывая "поищи, посмотри и т.д . Повторенье мать учения
  20. Благодарю за разьяснение, но это я все уже знал давно и нового не извлёк. Такое впечатление что ни кто не понимает о чем тут речь. Ни кто не помогал, разобрался сам.
  21. Все. Всем спасибо, Разобрался. Я как понял, что можно и не ставить условные прыжки..
  22. Нет,найти правильное смещение и внедрить его в код. В ebx'е искать, потому что при бряке идет выгрузка регистров с самого нижнего, заканчивая eax. Ebx больше подходит на начало структуры.
×
×
  • Создать...

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

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