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

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

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

Создано: 18 апреля 2015 19:51 · Поправил: OttoDeFix
· Личное сообщение · #1

Всем добрый вечер!
Есть две программы у обеих есть проверка на целостность кода.
Программа 1
1. Написана на - сейчас затрудняюсь ответить.
2. Упаковщик - UPX (с этим проблем нет)
3. Ограничение на запуск, только один экземпляр программы можно запустить.
4. Присутствует реклама.
После распаковки и восстановления импорта программа запускается, но коннекта к серверу нет, сначала подумал, что накосячил с распаковкой. Скачал автораспаковщик, распаковал им, результат тот же, запускается но коннекта нет. На время забросил разбираться с коннектом, с запуском нескольких экземпляров разобрался и сделал инлаин патч в виде загрузчика.
Сейчас вернулся к проблеме с коннектом, когда возился с инлаин патчем я понял, что в программе идет проверка на целостность (когда встроил патч в упакованный exe файл). Для пущей убедительности в упакованном exe файле немного изменил PE заголовок, а конкретно прописал контрольную сумму изначально она была 000000, в результате поведение повторилось прога запускается, а коннекта нет.
Подскажите, как отловить проверку? и какие методы проверки есть (с помощью каких апи функций). Так же буду благодарен, если до кучи кинете crackme с проверками целостности, но не сильно мудреные (crackme от PEkilla не предлагать ).

Программа 2
1. Написана на Delphi 7
2. Упаковщик UPX
3. Есть цифровая подпись - не знаю может ли она на что-то влиять.
4. Регистрация - хочу написать кейген

После распаковки выводит сообщение о повреждении файла, не могу отловить данное окошко, подскажите какими методами можно отловить создание окна. Проверка срабатывает, даже если переименовать упакованный exe файл.



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

Создано: 18 апреля 2015 20:05 · Поправил: dosprog
· Личное сообщение · #2

OttoDeFix пишет:
какие методы проверки есть (с помощью каких апи функций)


ImageHlp.MapFileAndCheckSum. Но она ни при чём, скорее всего.

OttoDeFix пишет:
4. Регистрация - хочу написать кейген


Так зачем тогда ковырять проверку целостности?



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

Создано: 18 апреля 2015 20:06
· Личное сообщение · #3

OttoDeFix
без ссылок на программы (в упакованном/запакованном виде) дальнейший разговор не имеет смысла - т.е. софт в студию.
А без софта - обычные гадания.

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

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

Создано: 18 апреля 2015 20:26
· Личное сообщение · #4

dosprog пишет:
Так зачем тогда ковырять проверку целостности?

Как-то разбирать алгоритм проверки ключа, а тем более его найти в упакованной проге очень муторно.

ELF_7719116 пишет:
А без софта - обычные гадания.

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



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

Создано: 18 апреля 2015 20:50
· Личное сообщение · #5

OttoDeFix пишет:
Я хочу понять, как можно отловить проверку

CreateFile, ReadFile, MapFileAndCheckSum

Если хочешь съесть арбуз, нужно думать как арбуз. Читать от корки до корки: --> Link <--



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

Создано: 18 апреля 2015 20:52 · Поправил: dosprog
· Личное сообщение · #6

TryAga1n пишет:
CreateFile, ReadFile, MapFileAndCheckSum


.. MapViewOfFile ..





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

Создано: 18 апреля 2015 21:07
· Личное сообщение · #7

TryAga1n пишет:
Если хочешь съесть арбуз, нужно думать как арбуз. Читать от корки до корки:

имхо хрень..
есть старый баян.. еще с времен доса.. "ловля на дрозофила" и неебет
суть в чем.. заменяеш 1 байт.. и смотриш.. работает ли твоя прога.. если нет.. ищеш другое место.. если да. то варианта 2. либо чтение памяти, либо чтения файла. ВСЕ!!!

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




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

Создано: 18 апреля 2015 21:09 · Поправил: dosprog
· Личное сообщение · #8

VodoleY пишет:
суть в чем.. заменяеш 1 байт..


Так ТС так и делал - заменил сумму в упакованном файле. Функционал при этом исчез.
С его слов.





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

Создано: 18 апреля 2015 21:16
· Личное сообщение · #9

dosprog пишет:
Функционал при этом исчез.

более тонкий подход.. это менять в памяти... если функционал остался.. значит образ файла проверяется? или на оборот.. на ЕР стоим.. и меняем в памяти данные на оригинал.. узнаем каким хером чекается проверка

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




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

Создано: 18 апреля 2015 21:24 · Поправил: dosprog
· Личное сообщение · #10

VodoleY пишет:
узнаем каким хером чекается проверка


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




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

Создано: 18 апреля 2015 21:35
· Личное сообщение · #11

OttoDeFix пишет:
Есть цифровая подпись - не знаю может ли она на что-то влиять

Да. wintrust.WinVerifyTrust (юзается у продуктов MC & Renox), тоже под UPX

-----
ds




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

Создано: 18 апреля 2015 22:09
· Личное сообщение · #12

TryAga1n пишет:
Читать от корки до корки

Спасибо за доку, почти то что искал, еще бы crackme желательно с примером решения.
dosprog пишет:
MapViewOfFile

Это как у asprotect? А где можно прочитать, как с ее помощью осуществляется проверка?
VodoleY пишет:
более тонкий подход.. это менять в памяти...

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




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 18 апреля 2015 22:12
· Личное сообщение · #13

DimitarSerg пишет:
Да. wintrust.WinVerifyTrust (юзается у продуктов MC & Renox), тоже под UPX

Гадаем на кофейной гуще? Пусть ТС выкладывает дистриб или весь словесный понос не имеет смысла.

-----
aLL rIGHTS rEVERSED!




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

Создано: 18 апреля 2015 22:36 · Поправил: dosprog
· Личное сообщение · #14

OttoDeFix пишет:
А где можно прочитать, как с ее помощью осуществляется проверка?


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



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

Создано: 18 апреля 2015 22:59
· Личное сообщение · #15

dosprog пишет:
В памяти по возвращаемому адресу оказывается целиком весь рассматриваемый файл.

Точнее в EAX адрес начала. Уже разобрался, дальше вызывается функция для подсчета CRC.
Я не совсем новичек, просто этим не занимался 8 лет, с трудом но вспоминается былое.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 18 апреля 2015 23:37 · Поправил: Kindly
· Личное сообщение · #16

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

-----
Array[Login..Logout] of Life




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

Создано: 19 апреля 2015 05:45
· Личное сообщение · #17

Зачем ее обходить вообще ? Пускаешь на исполнение в отладчике и секцию с кодом фолловишь в дизассемблер.Все.Делать с кодом чо хошь.

-----
TEST YOUR MIGHT




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

Создано: 19 апреля 2015 19:14 · Поправил: OttoDeFix
· Личное сообщение · #18

В общем, чет я запутался в этой проге, вот ссылка --> Link <-- гляньте у кого время есть.



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

Создано: 19 апреля 2015 19:58 · Поправил: dosprog
· Личное сообщение · #19

OttoDeFix пишет:
В общем, [..]


В общем, запускать у себя её не буду, нету времени.
Но чтение обычным ReadFile, подсчёт суммы и сравнение её с данными, записанными в оверлее (80 dec. байтов).
Имхо

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


Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 19 апреля 2015 22:42 · Поправил: Kindly
· Личное сообщение · #20

OttoDeFix (nastya), если не хочешь возиться с вычислениями перенаправляй проверку на копию оригинала через GetModuleFileNameA, либо делай что-то с проверками начиная отсюда: 009A1D78
Наверное, врядли прога даст запатчить напрямую, но как вариант попробуй подменить требуемые данные.
Суть топика помочь, а не сделать - ведь так?

-----
Array[Login..Logout] of Life


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

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

Создано: 20 апреля 2015 06:15 · Поправил: OttoDeFix
· Личное сообщение · #21

dosprog пишет:
Но чтение обычным ReadFile, подсчёт суммы и сравнение её с данными, записанными в оверлее (80 dec. байтов)

Блин... оверлей! Извини не заметил твое сообщение, где ты про оверлей спрашивал, а сейчас глянул в упакованном экзешние.
Kindly пишет:
если не хочешь возиться с вычислениями перенаправляй проверку на копию оригинала через GetModuleFileNameA, либо делай что-то с проверками начиная отсюда: 009A1D78

Уфф... ну значит я в правильном направлении шел, как раз разбирал функцию по адресу 9A1D8D - после ее выполнения в стек заносится размер файла в юникоде, но без оверлея (в распакованном, оверлея нет) я и заплутал.
Kindly пишет:
Суть топика помочь, а не сделать - ведь так?

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

P.S. Как можно организовать с помощью патча автосмену имени объекта mutex?



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

Создано: 20 апреля 2015 11:19
· Личное сообщение · #22

OttoDeFix пишет:
[..] как раз разбирал функцию по адресу 9A1D8D - после ее выполнения в стек заносится размер файла в юникоде, но без оверлея (в распакованном, оверлея нет) [..]


В распакованном оверлей есть.





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

Создано: 20 апреля 2015 12:19
· Личное сообщение · #23

dosprog пишет:
В распакованном оверлей есть.

Откуда он там возьмется? При снятии дампа, он отлетает.



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

Создано: 20 апреля 2015 12:24 · Поправил: dosprog
· Личное сообщение · #24

OttoDeFix пишет:
Откуда он там возьмется? При снятии дампа, он отлетает.


Какое снятие дампа?.. Используйте команду
C> UPX -D shareman.exe

Специально же сделано, чтоб было удобнее





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

Создано: 21 апреля 2015 11:36
· Личное сообщение · #25

Всем спасибо!
Разобрался в алгоритме, сгенерил правильный оверлей, прикрепил к дампу и все пошло-поехало.

P.S. Тему пока не закрываю, так как осталось еще одна прога упомянутая в начале.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 21 апреля 2015 12:04
· Личное сообщение · #26

OttoDeFix пишет:
осталось еще одна прога упомянутая в начале.

ну так выкладывай

-----
Array[Login..Logout] of Life




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

Создано: 21 апреля 2015 16:46
· Личное сообщение · #27

Подскажите, как в ольке отловить чекбос и нажатие на кнопку?



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 21 апреля 2015 16:54
· Личное сообщение · #28

OttoDeFix
--> Link <--


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


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