Сейчас на форуме: _MBK_ (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Помогите найти статический адрес (OllyDbg)
Посл.ответ Сообщение

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 января 2011 02:00 · Поправил: Модератор
· Личное сообщение · #1

Добрый день. Я только начал изучать Olly, поэтому мой вопрос, возможно, дилетантский - так что не бейте ногами Для начала опишу проблему.

В связи с началом изучения Olly и ассемблера, с полки был извлечён пыльный исходник собственной проги, написанной когда-то в качестве тренировки мозгофф, предназначенной

для одной онлайн игры (не пугайтесь, я не взламываю игру - просто читайте дальше). В проге я реализовал поиск определённого значения в памяти подобно артмани. Далее, прога

читала по этому значению dword (значение сытости питомца) и в зависимости от этого выполняла определённые действия (кормление). Таким образом, адрес был динамическим.

Занявшись Olly, я решил найти статический адрес. Для всех остальных значений я нашёл статические адреса, а вот для этого не могу, т.к. в olly никогда этого не делал. Я поставил брейк на адрес, по которому лежало значение и выскочил на код:

Code:
  1. MOV DWORD PTR DS:[ESI+28],EDX


Регистры:

Code:
  1. EAX 00000064
  2. ECX 00000064
  3. EDX 00000037
  4. EBX FFFFFFFF
  5. ESP 0018F608
  6. EBP 0018F6C8
  7. ESI 20C25A90
  8. EDI 00000000
  9. EIP 1016AED7 Engine.1016AED7


Вот полный код процедуры (расположена в Engine.dll игры), которая имеет доступ к адресу памяти:

Code:
  1. 1016AE85   E8 B63A0000      CALL Engine.1016E940
  2. 1016AE8A   E9 A1000000      JMP Engine.1016AF30
  3. 1016AE8F   8A85 60FFFFFF    MOV AL,BYTE PTR SS:[EBP-A0]
  4. 1016AE95   8846 04          MOV BYTE PTR DS:[ESI+4],AL
  5. 1016AE98   8B8D 64FFFFFF    MOV ECX,DWORD PTR SS:[EBP-9C]
  6. 1016AE9E   894E 08          MOV DWORD PTR DS:[ESI+8],ECX
  7. 1016AEA1   8B95 6CFFFFFF    MOV EDX,DWORD PTR SS:[EBP-94]
  8. 1016AEA7   8956 10          MOV DWORD PTR DS:[ESI+10],EDX
  9. 1016AEAA   8B85 70FFFFFF    MOV EAX,DWORD PTR SS:[EBP-90]
  10. 1016AEB0   8946 14          MOV DWORD PTR DS:[ESI+14],EAX
  11. 1016AEB3   8B8D 74FFFFFF    MOV ECX,DWORD PTR SS:[EBP-8C]
  12. 1016AEB9   894E 18          MOV DWORD PTR DS:[ESI+18],ECX
  13. 1016AEBC   8B95 78FFFFFF    MOV EDX,DWORD PTR SS:[EBP-88]
  14. 1016AEC2   8956 1C          MOV DWORD PTR DS:[ESI+1C],EDX
  15. 1016AEC5   8B85 7CFFFFFF    MOV EAX,DWORD PTR SS:[EBP-84]
  16. 1016AECB   8946 20          MOV DWORD PTR DS:[ESI+20],EAX
  17. 1016AECE   8B4D 80          MOV ECX,DWORD PTR SS:[EBP-80]
  18. 1016AED1   894E 24          MOV DWORD PTR DS:[ESI+24],ECX
  19. 1016AED4   8B55 84          MOV EDX,DWORD PTR SS:[EBP-7C]
  20. 1016AED7   8956 28          MOV DWORD PTR DS:[ESI+28],EDX
  21. 1016AEDA   8B45 88          MOV EAX,DWORD PTR SS:[EBP-78]
  22. 1016AEDD   8946 2C          MOV DWORD PTR DS:[ESI+2C],EAX
  23. 1016AEE0   8B4D 90          MOV ECX,DWORD PTR SS:[EBP-70]
  24. 1016AEE3   894E 34          MOV DWORD PTR DS:[ESI+34],ECX
  25. 1016AEE6   8B55 94          MOV EDX,DWORD PTR SS:[EBP-6C]
  26. 1016AEE9   8956 38          MOV DWORD PTR DS:[ESI+38],EDX
  27. 1016AEEC   8B45 98          MOV EAX,DWORD PTR SS:[EBP-68]
  28. 1016AEEF   8946 3C          MOV DWORD PTR DS:[ESI+3C],EAX
  29. 1016AEF2   8B4D 9C          MOV ECX,DWORD PTR SS:[EBP-64]
  30. 1016AEF5   894E 40          MOV DWORD PTR DS:[ESI+40],ECX
  31. 1016AEF8   8B55 A0          MOV EDX,DWORD PTR SS:[EBP-60]
  32. 1016AEFB   8956 44          MOV DWORD PTR DS:[ESI+44],EDX
  33. 1016AEFE   8B45 A4          MOV EAX,DWORD PTR SS:[EBP-5C]
  34. 1016AF01   8946 48          MOV DWORD PTR DS:[ESI+48],EAX
  35. 1016AF04   8A4D A8          MOV CL,BYTE PTR SS:[EBP-58]
  36. 1016AF07   884E 4C          MOV BYTE PTR DS:[ESI+4C],CL
  37. 1016AF0A   8B55 8C          MOV EDX,DWORD PTR SS:[EBP-74]
  38. 1016AF0D   8956 30          MOV DWORD PTR DS:[ESI+30],EDX
  39. 1016AF10   8B45 AC          MOV EAX,DWORD PTR SS:[EBP-54]
  40. 1016AF13   8946 50          MOV DWORD PTR DS:[ESI+50],EAX
  41. 1016AF16   8B4D B0          MOV ECX,DWORD PTR SS:[EBP-50]


Подскажите, что делать дальше? Я так понимаю, сперва данные заносятся в EDX из EBP-7C?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 21 января 2011 07:01 · Поправил: ARCHANGEL
· Личное сообщение · #2

toizy пишет:
Далее, прога

читала по этому значению dword (значение сытости питомца) и в зависимости от этого выполняла определённые действия (кормление). Таким образом, адрес был динамическим.

Занявшись Olly, я решил найти статический адрес.


Не верю, что человек с таких хреновым пониманием терминов "статический" и "динамический" мог написать бота для кормления питомца. Если дворд был динамическим, то как его можно сделать статиком? Допустим, прога выделяла память под это значение, а потом записывала туда число. Тогда это значение каждый раз разное. В другом случае - если это константа - оно всегда одно и то же, и один раз определив его, можно юзать без изменений. А эта процедура ассемблерная бесполезна, т.к. после первого кола идёт джамп безусловный в конец процедуры, и не ясно, какой же кусок оперирует с интересующим ТС значением.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 20.3 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 21 января 2011 10:01
· Личное сообщение · #3

toizy
В проге я реализовал поиск определённого значения в памяти подобно артмани
Как именно ?
Для всех остальных значений я нашёл статические адреса, а вот для этого не могу, т.к. в olly никогда этого не делал
Как именно ?



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 января 2011 14:01
· Личное сообщение · #4

2ARCHANGEL: не верьте, я никого переубеждать не собираюсь. Я же сказал, что только начинаю изучать все эти прелести, т.к. в колледже нам ничего подобного не преподавали. Господа, я только учусь, как бы хреново это у меня не получалось

Под динамическим я имел в виду термин из старой статьи на чемаксе - единственное, что я тогда смог найти в сети из элементарных гайдов (для dma и не-dma игр). Постараюсь выразится точнее - я хочу найти указатель на этот адрес, откуда он изменяется, чтобы убрать поиск из бота.

2[c4]: Поиск реализован так - открытие процесса, ReadProcessMemory, сравнение, если совпало, то в список, закрытие процесса. Отсев аналогичен поиску. Что до статических адресов, как я их неверно обозвал, так их я искал методом, описанных всё в той же статье на chemax.ru, других не знаю.

Я попробую разобраться, куда был джамп и что там происходит. Вопросы напишу в скором времени



Ранг: 87.8 (постоянный), 10thx
Активность: 0.070
Статус: Участник

Создано: 21 января 2011 16:43
· Личное сообщение · #5

Больше похоже что ТС имеет ввиду под статическим адрес на диске, а под динамическим адрес в памяти запущенной программы.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 21 января 2011 17:29
· Личное сообщение · #6

gena-m
Дык чо тут думать. Взял память просканил, темже чемаксом или как там его, нашёл переменную а тут облом - она не в секции данных
Олли приаттачил а там ппц тёмный лес, так как асм не знаем, ось не знаем и вобще школота.

toizy
Изучать маны, сурсы, реверсить.. учится в общем.

| Сообщение посчитали полезным: [c4], MORFIUS

Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 января 2011 19:01
· Личное сообщение · #7

Асм, не знаем, да. Ну так вот и разбираюсь Просто мне проще разбираться в том, что мне уже знакомо. Кстати, может подкините ссылок на маны по данному вопросу?



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 21 января 2011 19:06
· Личное сообщение · #8

--> CraCKlaB<-- --> craCKLAb<--



Ранг: 0.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 января 2011 19:10 · Поправил: Модератор
· Личное сообщение · #9

Кстати, то не бот, как подумал ARCHANGEL, это скорее "кликер" - так иногда называют подобные тулзятины. Тупо смотрит в памяти процесса значение и отсылает клавиши в окно. Более чем примитив.

ЗЫ. Clerk, за школоту ответишь А ежели серьёзно, мы колледжах всяких давно уже отучились, азы получили, ну а в крекинге квалификации не хватает. Если это вообще можно назвать квалификацией. Смотрю в код, а там - чёрт ногу сломит, не то что я

Николай, спасибо, учебник по асму для лохов - то что нужно! Ушёл читать, вопросы потом...




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 22 января 2011 07:27
· Личное сообщение · #10

Всегда было интересно, как можно что-то накодить, не зная асма? Часто на форумах читаю сообщения типа: "Знаю С, но не знаю асма..." Блин, а как такие люди дебажат?

-----
Stuck to the plan, always think that we would stand up, never ran.


| Сообщение посчитали полезным: neomant

Ранг: 20.3 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 23 января 2011 11:07
· Личное сообщение · #11

toizy
wasm.ru/series.php?sid=17


 eXeL@B —› Вопросы новичков —› Помогите найти статический адрес (OllyDbg)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати