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

Жажда Знаний

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

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

  • Посещение

Сообщения, опубликованные Жажда Знаний

  1. Скрытый текст

    aobscan(Test,8B 42 28 83 F8 00) // should be unique
    alloc(newmem,$1000)

    label(code)
    label(return)

    newmem:

    code:

    push ecx
    mov ecx, dword ptr [edx+40]
    mov ecx, dword ptr [edx+b4]
    cmp dword ptr [ecx+30],1
    pop ecx
    jne @f
     mov [edx+28],#20


    @@:
      mov eax,[edx+28]
      cmp eax,00
      jmp return

    Test:
      jmp newmem
      nop
    return:
    registersymbol(Test)

    [DISABLE]

    Test:
      db 8B 42 28 83 F8 00

    unregistersymbol(Test)
    dealloc(newmem)

    {
    // ORIGINAL CODE - INJECTION POINT: 0A582204

    ""+A5821E1: 83 C4 10           -  add esp,10
    ""+A5821E4: 8B 4D E4           -  mov ecx,[ebp-1C]
    ""+A5821E7: 85 C0              -  test eax,eax
    ""+A5821E9: 75 2F              -  jne 0A58221A
    ""+A5821EB: 8B 4D E0           -  mov ecx,[ebp-20]
    ""+A5821EE: 8D 89 A0 00 00 00  -  lea ecx,[ecx+000000A0]
    ""+A5821F4: 8D 55 F0           -  lea edx,[ebp-10]
    ""+A5821F7: E8 03 FF E0 4E     -  call "Adobe AIR.dll"+4E20FF
    ""+A5821FC: 8B 55 E4           -  mov edx,[ebp-1C]
    ""+A5821FF: B9 00 00 00 00     -  mov ecx,00000000
    // ---------- INJECTING HERE ----------
    ""+A582204: 8B 42 28           -  mov eax,[edx+28]
    ""+A582207: 83 F8 00           -  cmp eax,00
    // ---------- DONE INJECTING  ----------
    ""+A58220A: 0F 4E C1           -  cmovle eax,ecx
    ""+A58220D: 8B 4D F0           -  mov ecx,[ebp-10]
    ""+A582210: 89 0D 54 B0 32 03  -  mov [0332B054],ecx
    ""+A582216: 8B E5              -  mov esp,ebp
    ""+A582218: 5D                 -  pop ebp
    ""+A582219: C3                 -  ret 
    ""+A58221A: 8B 41 28           -  mov eax,[ecx+28]
    ""+A58221D: 8B 4D F0           -  mov ecx,[ebp-10]
    ""+A582220: 89 0D 54 B0 32 03  -  mov [0332B054],ecx
    ""+A582226: 8B E5              -  mov esp,ebp
    }

     

  2. 15 минуту назад, partoftheworlD сказал:

    Если такой указатель [[[edx+40] + b4] + 30] , то :

     

    
    push ecx
    mov ecx, dword ptr [edx+40]
    mov ecx, dword ptr [ecx+b4] 
    cmp [ecx+30],1
    pop ecx

     

    Хотя лучше выложи полный АА листинг

    Если записать его так  то он РАБОТАЕТ ПРАВИЛЬНО

     

    push ecx

    mov ecx,dword ptr [edx+40] - указатель
    cmp byte ptr [ecx+b4] ,0
    pop ecx 

     

    Но как записать скрипт далее если сделать развертывание "b4",  то есть продолжить скрипт. Как указать правильное смещение От [ecx+b4] на [ecx +30] ?

  3. Всем Привет. Такая Проблема, никак не получается создать скрипт с идентификатором игрока при открытии нескольких указателей в структуре игрока. Вот скрипт:

    push ecx
    mov ecx,dword ptr [edx+40] - указатель
    mov ecx, dword ptr [edx+b4] - указатель
    cmp dword ptr [ecx+30],1   // Как правильно записать число 1 что бы скрипт работал Правильно ? Ecx+30 Находится в подструктуре указателя Edx+b4
    pop ecx

  4. Lamalamaz, хорошо, проверю отпишу. Суть в том, что сами игры мне не так интересны как менять самому игровой код под свой лад, этот процесс куда более интересней и увлекательней. Хотелось бы разобрать игру более детально. Возможно что шанс на крит.урон находится под числом 4000, как множитель, которое находится в стеке по смещению урона. Esp+4.региона памяти. Так как через стек вышел на инструкцию отвечающую за % (fmul) отношение успешного выполнения любого заклинания а также на магические возможности оружия(заморозить, окаменить,т.д) и на время продолжительности заклинаний и их параметров. Если интересно потестить могу скинуть.

  5. "lamalamaz", пробовал варианты от 1 до 100, урон от изменений не менялся. Но попробую от 1000 и более. А если в общем как можно выйти на инструкцию урона ? Если по трассировке стека или доступа ? Может с помощью каких еще инструментов отладчиков ?

  6. NullAlex, извеняюсь, не специально, просто еще не разобрался как правильно заливать, путаюсь.

    Lamalamaz, увы, скрипт включается но не работает. Что если сделать так, использовать фильтр на инструкцию записи жизней, на игрока стандартно, а на инструкцию врагов приписать деление (div). Как правильно написать что бы деление проводилось на 2 ? . Урон всегда проходит по инструкциям работающими с жизнями ?

  7. Попробовал твой Пример со стеком, у меня не вышло Видимо что то сделал не так. Вот Скрин стека на урон по  Врагу.

    Esp+4 Это уронEsp+8 Это Жизни врагаEsp+14 Может быть это множитель уронаEsp+20 урон cmp dword ptr [edi+0000011C],00 Это инструкция разветвления свой - чужой. 0 враг, 1 игрок,
     

    Как правильно записать стек в скрипт ?

    fild dword ptr [esp+4]fild dword ptr [esp+20]sal [esp+4],2sal [esp+20],2fistp dword ptr [esp+4]fistp dword ptr [esp+20]  fild dword ptr [esi]mov [esp+08],eax  jmp return
    Такой  вариант не работает,

    С таймером Разобрался немного Проанализировав инструкции Получилось  так

    code:cmp [esi+00],017B2148 //Invisiblcmp [esi+00],017B2068 //обзорjne @fmov [esi+14],(float)-1fld dword ptr [esi+14]jmp return@@:  //fld dword ptr [esi+14]  fstp dword ptr [esi+18]  jmp return

    NullAlex: Тег кода не зря придумали.

  8. NullAlex

    Структуру игрока я исследовал и нашел там массу интересного но не то что искал, подструктурные указатели фиксировал на изменения но не смог в них разобратся. Попробую тогда метод на уменьшение, аналогом примера это снятие одевание предмета который меняет значение крит.удара. Что касается таймера, то через команду 'моv' значение становится постоянным и не уменьшается. Иследовав стек нашел что таймер работает под смещением [esp+18], а в [esp+24] вычитается на (float)-0.02. Можно конешно б было прописать так 'mov [esp+24],(float)0.01, но это не то. Хотелось бы прописать всем способностям (float)30. В [edi+14]находится начальный таймер отчета, но скрипт с ним не работает,

    Garik66

    Ок, попробую так. Почему то смещения со стартовым значения отсчета не работают, то ли они подгружаются еще какой инструкцией. С очками способностей пробовал, не вышло. Скорее всего получается либо деление либо умножение. Но суть в том что в стеке это можно найти, только как это из стека перетащить в скрипт что он работал ?

    NullAlex: Не нужно цитировать все сообщения полностью и делать гигантский пост. Это трудночитаемо, и отталкивает пользователей.

  9. Использовать поиск неизвестное значение, далее увеличелось, уменьшелось или изменилось, не изменилось...

    Я так именно и делал, ничего с этого не вышло. Оставшиеся адреса просто перестают менятся.

  10. Всем привет. Помогите пожалуйста. Вот в чем проблема. В игре пытаюсь найти 'шанс критического удара'. При добавлении 1 бала способностей 'шанс крит.удара увеличивается на 2, это в % соотношении. Что я делал: иследовал инстукции которые работают с атрибутами и навыками, умениями,далее ставил бряки на значения и инструкции,(на запись и доступ), затем исследовал все регисты при бряке на расструктаризацию и фиксирование на изменения, в итоге так и не нашел нужного. Единственное что мало исследовал стек, так как в нем плохо разбираюсь, а в нем большой потенциал получение нужного. Получается что при начислении очков способностей срабатывает умножение либо деление. Поиск и отсев тоже не помог. Какие еще варианты поиска могут быть ? Еще как можно увелить значение таймера инструкцией 'fld [edi+18] ',а не делая его постоянным через ' mov ' ?

  11. Спасибо. Но это мне все знакомо. Тут немного сложнее. Поиск неизвестого значения не помогает. Вот как раз исходно начальный адрес таймера у меня есть, он статический, сам цикл отчета не получается найти. Возможно что цикл отчета постоянен и не имеет остановки, но вариант со спидхаком тоже не помог. Бряки и брейкпонты тоже. Если освоить такой алгоритм поиска то его можно практиковать на всех играх.

  12. Помогите пожайлуста, очень нужна помощь, у меня ни как не получается найти то что интересует. Подскажите какими способами можно найти скрытый таймер, путем 'поиск-отсев' не выходит, находит более тысячи адресов, затем адрес обновляется и меняется, если фризить игра вылетает. Можно ли при нахождении одного таймера выйти на другой если работать с регистрами одной структуры? Фиксирование структуры в этом случае не помогает.

×
×
  • Создать...

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

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