Сейчас на форуме: asfa, bartolomeo (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Помощь во взломе игры
Посл.ответ Сообщение

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

Создано: 28 июня 2012 16:39
· Личное сообщение · #1

Добрый день
немного оффтопа:
давным-давно играл в старую игрушку, но мне нравилась, как-то решил поиграть, но ее не оказалось (была на диске), тогда начал искать в инете, нашел версий 6 (русские+английские+хакнутые+нехакнутые), но у всех были проблемы (вылеты/низкое разрешение/не русифицирована полностью/неработающие читы...) тогда решил сделать свою сборку, ну и потратив недельку на поиск библиотек, правку ресурсов, починку читов... сделал, осталась одна проблема, была хакнутая версия главного ехе версии 1.0.1.23 в ней наблюдались некоторые проблемы, и 1.0.6.8, в ней этих проблем не было, но она была не хакнута, тогда я решил сделать хак
Сам я программист, но асм знаю плохо, С знаю получше, ну и посидел я день в отладчике, но даже не нашел кода с защитой (зеленый был, да я щас такой же), тогда решил изучить систему защиты, а защита простая, в реестр пишется CDImage, возможно там хеш диска или еще чего, но проверяется только структура диска, тогда я сделал образ, полностью идентичный по структуре с оригинальным, но файлы пустые, все прошло, сейчас решил еще раз попробовать хакнуть ехе.
Итак, в IDA подключив сигнатуры нашел пару функций касательно CD, но код на асме не особо понятен, хотелось бы привести его к си, сигнатуры в составе и найденные не особо помогли, решил свои сделать, зная, что использовался компилятор Visual C 5.1 (Visual C++ 97), еле нашел этот компилятор на старых фтп мелкомягких, скачал, но не могу создать сигны, к одной либе получилось, остальные нет, читал ман пару часов, как только не экспериментировал с ключами, но не особо понятно, не подскажите ли, что надо ввести и что пихать, только .lib или находящиеся там .pdb мож?
Сама защита - окошко с просьбой вставить диск, оно находится в ресурсах дллки проги, знаю в каком блоке сообщение находится, также в ольке нашел место, откуда вызывается дллка, но переход в это место происходит из ntdll(так в стеке написано), также есть одно место в самом ехе игры, хотелось бы в иде найти си-фицированный код, тогда бы многое стало понятно.
Также подскажите, может легче следить за вызовом винапи функции или сравнить дампы при вставленном диске и без или еще чего...
Извините за "многабукаф", но хотел полностью описать все, и самому взломать, защита имхо очень простая, хотя можно было бы попросить, чтоб взломали, думаю это не заняло бы много времени у профи




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 28 июня 2012 16:42
· Личное сообщение · #2

вы определитесь
1) что бы вам взломали
2) или хотите сами



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

Создано: 28 июня 2012 16:46
· Личное сообщение · #3

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 июня 2012 17:01
· Личное сообщение · #4

Со статей для новичков начать, с гугла начать, где гуглится, например, это http://www.wasm.ru/article.php?article=flex где написано про сигнатуры. А вообще топик ни о чём, сначала надо много читать и основам хотя бы научиться, либо сразу в запросы.



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

Создано: 28 июня 2012 17:13 · Поправил: novashdima
· Личное сообщение · #5

Гуглил, ничего вразумительного не нашел. в той статье, на которую вы скинули ссылку тоже не особо описано, как определить тип длл например, какой ключ для чего применяется, какая утилита нужны, для каких файлов вообще работает для каких языков, нашел пример:
E:\flexlm\v8.0\i86_n3>pcf lmgr.lib lmgr
lmgr.lib: skipped 0, total 142
и толку то от него, если я это все перепробовал и единственное, что я получаю после такой команды это:
Can't open input file 'libc.lib'
а почему, как с этим бороться нигде не написано, поэтому и попросил помощи, я же не зря сказал, что пару часов копал на эту тему

Archer пишет:
Со статей для новичков начать...

Так ведь я так и написал, подскажите как то сделать и как это, киньте ссылочки на статьи, полезные в конкретном случае, а то, что надо изучать я итак это знаю.
Насчет основ, читал я и основы работы с олькой и другие статьи и на этом сайте и на других.

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




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 28 июня 2012 18:01
· Личное сообщение · #6

novashdima
Ссылка на игру или ее название ? Если игра "старая" (ничем не накрыта и просто просит диск) то там даже ребенок с отломом справится ;)

-----
Don_t hate the cracker - hate the code.





Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 28 июня 2012 22:17
· Личное сообщение · #7

novashdima пишет:
п.с. вы меня прям уж совсем ниже плинтуса опустили, я знаю что почти ничего не знаю, но такое очевидное писать ну уж прям совсем

А как ты хотел? Не зная основ, сам ты сделать ничего не сможешь и придется все делать за тебя...
ОСНОВЫ - это ВСЕ! Никто не сможет есть суп, пока не научиться держать ложку. Никто не сможет научиться ездить на машине, пока не знает, какая педаль за что отвечает... и так далее...

Выдай ссылку на игру, покажи - чему ты научился, когда читал статьи! И тогда люди к тебе потянутся, начнут подсказывать... Более никак...

-----
One death is a tragedy, one million is a statistic.




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

Создано: 28 июня 2012 23:00
· Личное сообщение · #8

Да, игра старая, 1999 года, я же и говорю, хак должен быть простой, поменять переход или адрес перехода я смогу, только надо найти, где проверка выполняется, поэтому я и хотел сделать сигнатуры для иды и посмотреть код в си, тогда уж и в отладчике все сделал бы.
ZaZa пишет:
Не зная основ, сам ты сделать ничего не сможешь и придется все делать за тебя

Под основами все понимают разное, если самые самые основы, то я их знаю.
Я же описал систему защиты, что нашел, вот и спрашиваю, в какую сторону копать: ловить вызов дллки с сообщение, или работу с реестром, смотреть найденный сигнатурами в иде код работы с образом СД, сравнивать дампы с диском и без и потом сравнивать или сравнить ломаный ехе старой версии и неломанный.



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

Создано: 28 июня 2012 23:20
· Личное сообщение · #9

Игрyшка как называется? RE?




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 28 июня 2012 23:32
· Личное сообщение · #10

novashdima
Дай уже игру... ну или название хотя бы... интриган

-----
One death is a tragedy, one million is a statistic.


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


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 28 июня 2012 23:44 · Поправил: -=AkaBOSS=-
· Личное сообщение · #11

novashdima пишет:
код на асме не особо понятен, хотелось бы привести его к си

ну приведешь, и что? патчить-то один фиг придётся на асме...
сомнительно, чтобы декомпиляция в си стоила пары байт патча

novashdima пишет:
проверяется только структура диска, тогда я сделал образ, полностью идентичный по структуре с оригинальным, но файлы пустые, все прошло

это называется MiniISO

теперь можно попробовать подключиться к проге каким-нибудь API-шпионом, либо расставлять бряки
в отладчике. даже если проверяется только наличие файлов, обращения могут быть самыми разными:
от банальных CreateFile/FindFirstFile/FindNextFile до неочевидных проверок типа GetFileAttributes/SetFileAttributes

/ADD
NikolayD пишет:
Игрyшка как называется? RE?


hlmadip пишет:
Игра Recoil?


битва экстрасенсов продолжается

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


Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 28 июня 2012 23:54
· Личное сообщение · #12

novashdima пишет:
Сам я программист, но асм знаю плохо
упаси боже юзеров от твох программ...
вам сюда --> Link <--

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


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

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

Создано: 29 июня 2012 00:18 · Поправил: hlmadip
· Личное сообщение · #13

Игра Recoil?
Гадания какие-то начались.
novashdima пишет:
Я же описал систему защиты, что нашел, вот и спрашиваю, в какую сторону копать: ловить вызов дллки с сообщение, или работу с реестром, смотреть найденный сигнатурами в иде код работы с образом СД, сравнивать дампы с диском и без и потом сравнивать или сравнить ломаный ехе старой версии и неломанный.

Возможно, программа работает так: получение списка дисков -> проверка типа диска(GetDriveType)-> поиск на диске необходимых файлов(пост -=AkaBOSS=-'а).
В таком случае отловить проверку диска и проверку файлов.



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

Создано: 29 июня 2012 01:50
· Личное сообщение · #14

hlmadip пишет:
Игра Recoil?

Ведь несложно найти, правда, ники у меня везде одинаковые)))
Поэтому да, игра Recoil.

hlmadip пишет:
GetDriveType

Насколько я помню эту функцию я и видел в списке юзаемых в инфе об ехе.

ClockMan пишет:
упаси боже юзеров от твох программ...

Дык я же не на асме пишу, или вы хотите, чтобы после того, как я скомпилил прогу я открывал ее в отладчике и проверял, насколько хорошо работает оптимизация компилятора(есть у меня знакомый программист, каждый такт считает) или может вы хотите, чтобы я на асме писал? так может сразу на машинных кодах? А за ссылочки на винапи спасибо, хотя у меня вместе с комилятором ставилась и оффлайн помощь мсдн и другие....

-=AkaBOSS=- пишет:
ну приведешь, и что? патчить-то один фиг придётся на асме...сомнительно, чтобы декомпиляция в си стоила пары байт патча

это только для понимания что где и как происходит, нет ли доп проверок каких или еще чего



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

Создано: 29 июня 2012 01:54 · Поправил: hlmadip
· Личное сообщение · #15

novashdima пишет:
Ведь несложно найти, правда, ники у меня везде одинаковые)))Поэтому да, игра Recoil.

Искал не по нику.
Ну теперь выложи что-ли главный исполняемый файл, а то с торрентов долго тянется
upd
novashdima пишет:
Насколько я помню эту функцию я и видел в списке юзаемых в инфе об ехе.

Ну так что мешает посмотреть, где и как она используется?



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

Создано: 29 июня 2012 02:51
· Личное сообщение · #16

hlmadip пишет:
Ну так что мешает посмотреть, где и как она используется?

хм... так это же насколько я знаю (т.е. не знаю) только в отладчике найти можно, а как поставить брейк на винапи функцию???
а узнал я о том, что она юзается после изучения ехе в PeExplorer
приатачил ехе игры

767c_29.06.2012_EXELAB.rU.tgz - Recoil.7z



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

Создано: 29 июня 2012 03:07 · Поправил: hlmadip
· Личное сообщение · #17

Используй IDA
Процедура проверки кажись такая же, как и в версии 1, 0, 1, 23
Адрес для остановки 4A59E0
novashdima пишет:
хм... так это же насколько я знаю (т.е. не знаю) только в отладчике найти можно, а как поставить брейк на винапи функцию???

RTFM?

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


Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 29 июня 2012 06:21 · Поправил: ZaZa
· Личное сообщение · #18

hlmadip пишет:
Адрес для остановки 4A59E0

Все верно:
Code:
  1. Получение всех логических дисков...
  2. 004A59F0  |.50              PUSH EAX                                 ; /Buffer
  3. 004A59F1  |.895424 1C       MOV DWORD PTR SS:[ESP+1C], EDX           ; |
  4. 004A59F5  |.68 00010000     PUSH 100                                 ; |BufSize = 100 (256.)
  5. 004A59FA  |.897C24 1C       MOV DWORD PTR SS:[ESP+1C], EDI           ; |
  6. 004A59FE  |.FF15 64C14C00   CALL DWORD PTR DS:[<&KERNEL32.GetLogical>; \GetLogicalDriveStringsA

Затем идет перебор всех дисков и проверка на то, что представленные диск является CD/DVD...
Code:
  1. 004A5A29  |.56              |PUSH ESI                                ; /RootPathName
  2. 004A5A2A  |.FF15 60C14C00   |CALL DWORD PTR DS:[<&KERNEL32.GetDriveT>; \GetDriveTypeA
  3. 004A5A30  |.83E8 03         |SUB EAX, 3                              ; Switch (cases 3..5)
  4. 004A5A33  |.74 23           |JE SHORT 004A5A58
  5. 004A5A35  |.83E8 02         |SUB EAX, 2
  6. 004A5A38  |.75 42           |JNZ SHORT 004A5A7C
  7. 004A5A3A  |.83FF 05         |CMP EDI, 5                              ; Case 5 of switch 004A5A30
  8. 004A5A3D  |.75 3D           |JNZ SHORT 004A5A7C

И если это действительно CD/DVD, то проверяем наличие файла: "\video\intro_01.avi"):
Code:
  1. 004A5A3F  |.8D5424 1C       |LEA EDX, DWORD PTR SS:[ESP+1C]
  2. 004A5A43  |.52              |PUSH EDX                                ; /statbuf
  3. 004A5A44  |.68 38B45600     |PUSH 0056B438                           ; |path = "F:\video\intro_01.avi"
  4. 004A5A49  |.FF15 08C54C00   |CALL DWORD PTR DS:[<&MSVCRT._stat>]     ; \_stat
  5. 004A5A4F  |.83C4 08         |ADD ESP, 8
  6. 004A5A52  |.85C0            |TEST EAX, EAX
  7. 004A5A54  |.75 26           |JNZ SHORT 004A5A7C
  8. 004A5A56  |.EB 1C           |JMP SHORT 004A5A74

И если файл присутствует, то происходит прыжок на адрес 004A5A74, а там:
Code:
  1. 004A5A74  |>C74424 10 01000>|MOV DWORD PTR SS:[ESP+10], 1          ;(Stack SS:[0013F658])

Поэтому можно сделать вывод, что всего-то нужно сделать:
1. Скопировать в корень диска C:\ всю структуру файла (ну или изменить пути в программе).
2. Изменить:
Code:
  1. 004A5A29  |.56              |PUSH ESI                                ; /RootPathName
  2. 004A5A2A  |.FF15 60C14C00   |CALL DWORD PTR DS:[<&KERNEL32.GetDriveT>; \GetDriveTypeA
  3. 004A5A30  |.83E8 03         |SUB EAX, 3                              ; Switch (cases 3..5)
  4. 004A5A33  |.74 23           |JE SHORT 004A5A58
  5. 004A5A35  |.83E8 02         |SUB EAX, 2
  6. 004A5A38  |.75 42           |JNZ SHORT 004A5A7C
  7. 004A5A3A  |.83FF 05         |CMP EDI, 5                              ; Case 5 of switch 004A5A30
  8. 004A5A3D  |.75 3D           |JNZ SHORT 004A5A7C
  9. 004A5A3F  |.8D5424 1C       |LEA EDX, DWORD PTR SS:[ESP+1C]
  10. 004A5A43  |.52              |PUSH EDX                                ; /statbuf
  11. 004A5A44  |.68 38B45600     |PUSH 0056B438                           ; |path = "F:\video\intro_01.avi"
  12. 004A5A49  |.FF15 08C54C00   |CALL DWORD PTR DS:[<&MSVCRT._stat>]     ; \_stat
  13. 004A5A4F  |.83C4 08         |ADD ESP, 8
  14. 004A5A52  |.85C0            |TEST EAX, EAX
  15. 004A5A54    75 26           JNZ SHORT 004A5A7C
  16. 004A5A56  |.EB 1C           |JMP SHORT 004A5A74

на:
Code:
  1. 004A5A29  |.56              |PUSH ESI                                ; /RootPathName
  2. 004A5A2A  |.FF15 60C14C00   |CALL DWORD PTR DS:[<&KERNEL32.GetDriveT>; \GetDriveTypeA
  3. 004A5A30  |.83E8 03         |SUB EAX, 3                              ; Switch (cases 3..5)
  4. 004A5A33    EB 3F           JMP SHORT 004A5A74     <-----ЗДЕСЬ!
  5. 004A5A35  |.83E8 02         |SUB EAX, 2
  6. 004A5A38  |.75 42           |JNZ SHORT 004A5A7C
  7. 004A5A3A  |.83FF 05         |CMP EDI, 5                              ; Case 5 of switch 004A5A30
  8. 004A5A3D  |.75 3D           |JNZ SHORT 004A5A7C
  9. 004A5A3F  |.8D5424 1C       |LEA EDX, DWORD PTR SS:[ESP+1C]
  10. 004A5A43  |.52              |PUSH EDX                                ; /statbuf
  11. 004A5A44  |.68 38B45600     |PUSH 0056B438                           ; |path = "F:\video\intro_01.avi"
  12. 004A5A49  |.FF15 08C54C00   |CALL DWORD PTR DS:[<&MSVCRT._stat>]     ; \_stat
  13. 004A5A4F  |.83C4 08         |ADD ESP, 8
  14. 004A5A52  |.85C0            |TEST EAX, EAX
  15. 004A5A54    75 26           JNZ SHORT 004A5A7C
  16. 004A5A56  |.EB 1C           |JMP SHORT 004A5A74

А потом сохранить и пробовать...

P.S. А вообще: реализаций обхода - великое множество...

-----
One death is a tragedy, one million is a statistic.


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

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

Создано: 29 июня 2012 12:40 · Поправил: hlmadip
· Личное сообщение · #19

ZaZa пишет:
Скопировать в корень диска C:\ всю структуру файла (ну или изменить пути в программе).

Это вы что-то загнули, достаточно пропатчить по адресу 004A5A7C и игрушка запускается
Upd:
патчить надо в двух местах




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 29 июня 2012 12:44 · Поправил: ZaZa
· Личное сообщение · #20

hlmadip пишет:
Это вы что-то загнули, достаточно пропатчить по адресу 004A5A7C и игрушка запускается

А если игра использует этот самый файл в своей работе? Тада без него худо придется... Тогда лучше скопировать )) Сильно не вникал...

-----
One death is a tragedy, one million is a statistic.




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

Создано: 29 июня 2012 20:11 · Поправил: novashdima
· Личное сообщение · #21

ZaZa пишет:
P.S. А вообще: реализаций обхода - великое множество...

Да это итак понятно)
А каким образом нашли этот кусок кода? Искали по функциям винапи?

hlmadip пишет:
RTFM

спасибо, пойду изучать.

ClockMan пишет:
Такое ущущение что вы сложнее "Hello World" ничего неписали.

Хм... что-то я вас не пойму, вы меня обвинили в том, что я плохо знаю асм, тут же вы имхо думаете, что я не отлаживаю программы что ли? Так когда пишешь на языках высокого уровня не обязательно на асме отлаживать, а то вдруг вы не знаете)

ClockMan пишет:
Вот только ненадо обижатся

Да конечно же нет, я адекватно воспринимаю критику, которая имеет место, а если и не имеет, то в основном это означает, что кто-то немного не так что-то понял

ZaZa пишет:
А если игра использует этот самый файл в своей работе?

Этот файл находится в папке с игрой, просто изначально если ставить с оригинального диска, то там есть минимальная установка, при которой на винт не копируются видео, а проигрываются с диска, тут же только полная инсталляция, иначе бы были проблемы при первом запуске игры используя MiniISO.


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




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 29 июня 2012 20:15 · Поправил: ZaZa
· Личное сообщение · #22

novashdima пишет:
А каким образом нашли этот кусок кода? Искали по функциям винапи?

Именно так: если ты заглядывал в статьи для новичков, то должен был натолкнуться на такую функцию GetLogicalDriveStringsA (получение имен всех логических дисков), ну а если там еще рядом и GetDriveTypeA (определить тип диска) есть, тада ваще труба

Статья здесь: --> Практически все о взломе CD <--

-----
One death is a tragedy, one million is a statistic.


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


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 29 июня 2012 20:35 · Поправил: plutos
· Личное сообщение · #23

novashdima
"... вы меня обвинили в том, что я плохо знаю асм..."

Да никто вас не обвинял, смотри выше : "Сам я программист, но асм знаю плохо, С знаю получше"
Т.е. получше, чем "плохо"...

Когда человек просит в десятый раз "кинуть ссылочку" (после того, как ему уже накидали "ссылочек") и тут же заранее заявляет, что "на чтение всех времени нет, да и практиковать же надо еще", то сразу становится ясно, что возня с ним - пустая трата времени...

PS
novashdima:
Может я фигней занимаюсь?

Да, похоже на то...

-----
Give me a HANDLE and I will move the Earth.


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

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

Создано: 29 июня 2012 21:13 · Поправил: novashdima
· Личное сообщение · #24

plutos пишет:
Т.е. получше, чем "плохо"...

А, ну если с этой стороны смотреть, тогда понятно) Но я ведь не сказал, что это единственные языки, которые я может плохо, но знаю)

plutos пишет:
Когда человек ...

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

ОФФТОП:
Да, особенно если прога вышла пару часов назад, стоимость этой самой проги исчисляется числом с 5-6 нулями, то да, а если делаешь ради изучения, приобретения опыта и просто ради кайфа, то только ломать самому)

Да, еще вопрос гуру, юзаю 2.04 версию ольки, раньше юзал стабильную 1.х, а в этой указав директорию до плагинов не горит кнопка с плагинами, а без командной строки как без рук(
К тому же не применяются настройки цветовой схемы. Может я фигней занимаюсь? Юзать версию 1.х и не париться?


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


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