14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
||||||||||||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||||||||||||
Разбор программы26.03.2013, 14:02. Показов 2230. Ответов 12
Метки нет (Все метки)
Вобщим я пытаюсь сделать для игры NOCD ексешник, что бы СД не запрашивало. Дизасемблировал код, где идет проверка на СД привод. Не могу разобрать все до конца. Вот код:
Функция:
0
|
26.03.2013, 14:02 | |
Ответы с готовыми решениями:
12
Разбор программы Разбор программы считающей сумму чисел в массиве Разбор программы "Архиватор" Разбор программы |
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
|
|
26.03.2013, 14:20 | 2 |
0
|
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
||||||
26.03.2013, 16:15 | 3 | |||||
0
|
76 / 76 / 2
Регистрация: 03.05.2012
Сообщений: 161
|
|
27.03.2013, 06:05 | 4 |
Это вряд ли. В byte_874960 должна быть буква диска, а не 0x01. И эта буква, скорее всего, не просто так в глобальную переменную пишется, а чтобы по ходу программы повторно к диску обращаться. Проверить 1 раз наличие файла script.dat в корневом каталоге было бы слишком просто.
0
|
Ушел с форума
16339 / 7659 / 1076
Регистрация: 11.11.2010
Сообщений: 13,702
|
|||||||||||||||||||||||||||||||||||
27.03.2013, 08:31 | 5 | ||||||||||||||||||||||||||||||||||
kurlyak,
проверку идет загрузка с CD или нет осуществляет функция GetDriveTypeA
Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive. To determine whether a drive is a USB-type drive, call SetupDiGetDeviceRegistryProperty and specify the SPDRP_REMOVAL_POLICY property. Syntax
lpRootPathName [in, optional] The root directory for the drive. A trailing backslash is required. If this parameter is NULL, the function uses the root of the current directory. Return value The return value specifies the type of drive, which can be one of the following values.
0
|
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
27.03.2013, 08:44 | 6 |
Угу. Вы мне это как-нибудь потом расскажете. Первый взлом HASP'a под Netware (1995) состоял примерно из такой же борзости и обошёлся заказчику в $300. 6 байтов.
Ломать - не строить, тут думать надо.
0
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
||||||
28.03.2013, 11:16 [ТС] | 7 | |||||
Спасибо за ответы.
Во первых Vadimych как вы определили что именно эта строка - моя строка, как перекодировали, или что? Самое главное что есть такой файл script.dat. Во вторых пробовал в коде поменять 5 (СД РОМ) на 3 (ХДД):
0
|
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
|
||||||
28.03.2013, 11:28 | 8 | |||||
Написал программку и посмотрел.
0
|
Ушел с форума
16339 / 7659 / 1076
Регистрация: 11.11.2010
Сообщений: 13,702
|
||||||
28.03.2013, 11:30 | 9 | |||||
kurlyak, а может быть проще нопами забить строку
0
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|||||||||||||||||||||
28.03.2013, 12:34 [ТС] | 10 | ||||||||||||||||||||
Mikl___ пробовал забить двумя нопами- ниче не вышло, требует СД. Мне кажеться что в переменную byte_874960 заносяться 0 или 1 соответственно буквам дисковода. Например есть А,(Б нету),С,Д значит byte_874960 будет равен 1011. Это мне так думаеться. Но в эту переменную byte_874960 в начале процедуры проверки заноситься:
Далее я написал небольшую программку на Си++ для перевода симоволов, но у меня получаеться бред на выводе:
И дальше еще вопрос. Почему одна строка эта что надо перевести- почему она разбиваеться на 3 части, и заноситься в 3 разных регистра процессора? Как она собираеться в одно целое? Я так думаю может в этом коде:
Я немного запутался.
0
|
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
28.03.2013, 12:44 | 11 |
0
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|
28.03.2013, 17:25 [ТС] | 12 |
Спасибо, я уже взламал игруху, идет без СД. Кстати, насчет этих строк- то в ассемблере они храняться наоборот чем в С++. Поэтому я вывернул строки наоборот- и прочитал строку. Вобще то взял просто сделал так, что игра не заходит в функцию проверки наличия СД- на месте функции проверки СД я отредактировал бинарник и возвращаю true- типа проверка пройдена успешно, и все. Дальше игруха сама находит текущий каталог.
Все спасибо, братва.
0
|
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
29.03.2013, 16:04 | 13 |
0
|
29.03.2013, 16:04 | |
29.03.2013, 16:04 | |
Помогаю со студенческими работами здесь
13
Разбор программы Разбор программы разбор программы разбор программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |