Сейчас на форуме: Rio, igorcauret (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Защита от распаковки UPX?
Посл.ответ Сообщение

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

Создано: 21 декабря 2014 22:48
· Личное сообщение · #1

Есть программка (выкладывать на всеобщий не могу) упакованная UPXом. Распаковал им же ну и как-бы не запускается - тупо идет на ExitProcess. Запускал в Ольге упакованную и руками распаковывал - результат тот же. Простой обход ExitProcess не помог... истина где-то глубже. Приаттачивается прекрасно ну и то что я задумал собственно сделал, но цель всетаки научиться а не тупо паламать... так что прошу подсказки. Еще пробовал поменять хексом байтик в заголовке упакованной - тоже выходит... вот думаю где-то есть проверка на целостность... но тут я что-то в тупик зашел.
Кто готов подсказать новичку скину прогу в личку (800кило)

Но и другое меня смутило... взял прогу левую и запаковал ее UPXом. проверил работает. Потом распаковал ее опять же UPXом - а она не работает. Взял другую - тоже самое. Я что то не догоню... распаковщик то вообще работает?

За тему прошу понять и простить



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 21 декабря 2014 22:57
· Личное сообщение · #2

Экстрасенсов здесь нет. Или выкладываешь или --> тебе сюда <--



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

Создано: 21 декабря 2014 23:09
· Личное сообщение · #3

Ссылка для скачивания файла: http://rusfolder.com/42588557



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

Создано: 22 декабря 2014 00:04
· Личное сообщение · #4

Code:
  1. 004D2E70    E8 F7CAFFFF     CALL 1.004CF96C

После возврата из 004CF96C должна вернуться единица.

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


Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 22 декабря 2014 04:15
· Личное сообщение · #5

Чтоб человеку понятнее:
Бряк на CreateFileA (файл читать будет себя) , смотришь вызов
...
004CF9AD . E8 5EDEFFFF CALL <JMP.&IMAGEHLP.MapFileAndCheckSumA>
...

Название говорит само за себя.

Добавлено спустя 12 минут
а, ну и
004CF5F9 . 8B45 F4 MOV EAX, DWORD PTR [EBP-0xC]
004CF5FC . 8B55 F0 MOV EDX, DWORD PTR [EBP-0x10]
004CF5FF . E8 405BF3FF CALL <System.@LStrCmp>


знаменитое StrCmp в явном виде

-----
ds


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

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 22 декабря 2014 07:34
· Личное сообщение · #6

я думал там вообще StarForce - он ведь тоже упх пакуется



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

Создано: 22 декабря 2014 08:45
· Личное сообщение · #7

Спасибо за помощь random и DimitarSerg! Уже есть над чем покурить.
Со System.@LStrCmp я разобрался еще на стадии аттача... а вот как найти чексум... не сталкивался никогда почти.
В любом случае выводы я походу правильно сделал в первом посте что идет проверка на целостность.
Осталось только догнать как обойти Но это я думаю справлюсь

Добавлено спустя 1 час 39 минут
Вроде обошел правкой двух джампов 004D2E77 и 004D2E84 - но хоть убейте не пойму что я сделал. Чисто на шару... уже некое чутье появляется у меня на всякие такие джампы...
Помогите пожалуйста с MapFileAndCheckSumA. Я не могу понять как она работает применительно к этой программе. MSDN вроде открыл но приложить к тому что вижу в отладчике не могу...




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 22 декабря 2014 11:44
· Личное сообщение · #8

Reversize а что непонятно? вот тут можно почитать http://www.delphikingdom.com/asp/viewitem.asp?catalogid=763

функция мапит PE файл и считает для него CRC потом в софте сравнивает с оригинальной.

-----
[nice coder and reverser]




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

Создано: 22 декабря 2014 11:59 · Поправил: vovanre
· Личное сообщение · #9

Reversize пишет:
Вроде обошел правкой двух джампов 004D2E77 и 004D2E84

Предлагаю подумать. Смотри:

Code:
  1. 004D2E70 CALL 004CF96C // Возвращает в регистра AL либо 0, либо 1 (логично -_-)
  2. 004D2E75 TEST AL,AL    // to google...
  3. 004D2E77 JZ 004D37B2 // Если AL = 0 то фигачим далеко и программа ничего не делая выходит


Усиленно думаем и наверное нужно что бы CALL 004CF96C ВСЕГДА возвращал AL == 1.
Окей, дальше нужно пропатчить функцию 004CF96C. Должно быть примерно так -> кладём в AL единицу и выходим из функции.
Поместить что либо в регистр можно через MOV .
Вернуться из функции можно через RET. А теперь подумай как это записать на асме и перенести в олю.



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

Создано: 22 декабря 2014 12:47
· Личное сообщение · #10

vovanre, как излечить я понял и уже удачно излечил. Вариантов лечения навалом.
Я не могу понять как в отладчике увидеть как MapFileAndCheckSumA передаются параметры, куда она их вернет, где идет сверка с контрольной суммой которая записана в программе...
Вижу только что MapFileAndCheckSumA возвращает 0 - типа все ок. Но где сама црц?



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

Создано: 22 декабря 2014 12:50
· Личное сообщение · #11

http://msdn.microsoft.com/en-us/library/windows/desktop/ms680355(v=vs.85).aspx


 eXeL@B —› Вопросы новичков —› Защита от распаковки UPX?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати