Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

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

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

Создано: 28 июля 2010 07:26
· Личное сообщение · #1

Есть Dll для генерации pdf файлов.
В триальной версии она добавляет строчку "Demo version" в генерируемые pdf файлы.
Чтобы ее зарегестрировать - необходимо в программе (которая будет использовать dll) прописать строчку dll.license:= (login,password);

попробовал исследовать Dll с помощью IDA (дизасемблирование), вот что получилось:
Схема:


Кодец:


Вопрос:
1.Как можно изменить данный код в dll ? (чтобы небыло условного перехода в
Code:
  1. loc_1002F210)


Code:
  1. .text:1002F1E0      cmp     [esp+3Ch+var_18], ebx
  2. .text:1002F1E4      jz      short loc_1002F210


2. можно ли отладить dll в IDA ? (чтобы просто подсмотреть
Code:
  1.  [esp+3Ch+var_18], ebx
)?
3. hex редактор: можно ли с помощью него заменить условный переход на другую команду?
4. интересует любая информация по вопросу.

p.s. можно просто удалить строчку "demo version" через hex редактор, но это не то. не труъ.
хотелось бы через IDA, как полагается.



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

Создано: 28 июля 2010 07:32
· Личное сообщение · #2

вторая фотка неверна, вот православный вариант:




Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 28 июля 2010 08:13
· Личное сообщение · #3

И вторая фотка не верна Тебе надо чтоб call 1002f22a вернул al,1.
Вариант 1(гиморный):
идешь по адресу 1002f22a, жмешь Hex View-A, копируешь там штук 10 байт, открываешь dll в любом hex редакторе, ищешь свою последовательность из 10 байт и меняешь первые 4 на 33С040С3.
Вариант 2:
Открываешь dll в ollydbg,идешь по адресу 1002f22a,меняешь код на:
xor eax,eax
inc eax
ret
или
mov al,1
ret
Жмешь правую кнопку мыша->Copy to Executable->All modification




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

Создано: 28 июля 2010 08:16
· Личное сообщение · #4

Править лучше каким-нить HIEW или олькой, олькой же и отладить можно. Идой тоже можно, если указать в настройках ехе, который эту длл грузит.



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

Создано: 28 июля 2010 11:37
· Личное сообщение · #5

кажись получилось.
благодарю.
только после Copy to Executable->All modification
надо делать save file



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

Создано: 01 августа 2010 18:35 · Поправил: tekton
· Личное сообщение · #6

Можно я влезу в тему ? Чтоб не создавать похожую.

Значит ситуация такая:
Есть прога, которая хранит ресурсы в DLL.
DLL упакована аспаком.
В ресурсах лежит Картинка GIF которая является водяным знаком.
Как запатчить её я знаю.

Вопрос: Можно ли Сделать типа инлайн патча для DLL и поместить этот код в EXE ???
Ну типа дождаться когда DLL распакуется в память, узнать нужный адрес и пропатчить ?
Как это сделать? (Если можно поподробнеее)


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




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

Создано: 01 августа 2010 19:59
· Личное сообщение · #7

Можно и в ехе. Сразу после загрузки длл бери и патчи. Либо сразу на точке входа ехе можно, если статически слинкована, либо после загрузки, если динамически. Ничего сложного.



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

Создано: 01 августа 2010 20:25 · Поправил: tekton
· Личное сообщение · #8

Archer пишет:
Либо сразу на точке входа ехе можно, если статически слинкована,

Сори! Немного не понял



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 01 августа 2010 21:10
· Личное сообщение · #9

Если при загрузке в отладчик длл уже загружена (Alt+E), то ищешь пустое место в exe и там пишешь примерно такой код:
pushad
pushfd
PUSH dll_s_resursami.dll (dll_s_resursami.dll это имя твоей длл)
call GetModuleHandleA
mov byte[eax+1234],0eb ;в eax будет адрес по которому загружена dll,1234 смещение по которому нужно пропатчить.
popfp
popad
jmp oep

и меняешь в проге oep на свой код
***********************************
Если длл подгружается позже, то стявь бряк LoadLibraryA(W) и после того как длл загрузится делаешь jmp в пустое место и там уже патчишь.



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

Создано: 02 августа 2010 02:39 · Поправил: tekton
· Личное сообщение · #10

Vovan Спасиб !
Но
стявь бряк LoadLibraryA(W)

А прога то на VB
Попробывал чисто проинлайнить DLL в самой DLL,
Прога ругается и не принимает её




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

Создано: 02 августа 2010 08:18
· Личное сообщение · #11

Если длл грузится динамически, и ВБ на П-Коде, вряд ли ты легко туда свой код впишешь. Тогда искать варианты, например, другие длл, куда код вписать.



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

Создано: 02 августа 2010 21:44
· Личное сообщение · #12

Ладно ребят! Спасибо за помощь




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

Создано: 28 января 2017 06:14 · Поправил: AKAB
· Личное сообщение · #13

Vovan666 пишет:
Если при загрузке в отладчик длл уже загружена (Alt+E), то ищешь пустое место в exe и там пишешь примерно такой код:
pushad
pushfd
PUSH dll_s_resursami.dll (dll_s_resursami.dll это имя твоей длл)
call GetModuleHandleA
mov byte[eax+1234],0eb ;в eax будет адрес по которому загружена dll,1234 смещение по которому нужно пропатчить.
popfp
popad
jmp oep

и меняешь в проге oep на свой код
***********************************
Если длл подгружается позже, то стявь бряк LoadLibraryA(W) и после того как длл загрузится делаешь jmp в пустое место и там уже патчишь.

прошу ещё раз написать как взломать Dll
-----
это имя длл:
df.dll
адрес взлома 699395AA (003795AA)
old byte 85
new bytre 31
---------



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

Создано: 02 марта 2017 07:22 · Поправил: harbor
· Личное сообщение · #14

народ, я что-то очканул создавать новый топик, решил тут пока отписаться..

Вопрос у меня похожий про dll
есть dll-ка которая защищает основную программу, то есть она проверяет лицензионный файл и если он не такой как задумано, то показывает окошко типа "блаблабла, неверная лицензия" и тупо закрывает программу.
Так вот как бы сделать так, чтобы избежать закрытия, может быть можно вырезать из dll эту функцию, подскажите как.
длл-ка в аттаче, вроде бы в ней должна быть функция проверки, если я не ошибся.




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

Создано: 02 марта 2017 07:37 · Поправил: -=AkaBOSS=-
· Личное сообщение · #15

harbor пишет:
я что-то очканул создавать новый топик

это правильно, но всё равно промахнулся - вот сюда надо было писать.


программа - z8rBIMDR0yDNxdTS3CAod3d3LnBrYmFzdS5ydSk, явно не для "запросов"
да и к тому же [!] DONGLE - Rainbow SENTiNEL references detected !
вероятнее всего, анализировать надо софт целиком, а не одну длл.



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

Создано: 02 марта 2017 08:49 · Поправил: harbor
· Личное сообщение · #16

-=AkaBOSS=-
можно плз не палить эту инфу об авторстве?
я удалил свой архив из сообщения.

посмотрел ddl-ку PE Explorer-oм, и увидел там похожие функции на проверку лицензии
например CheckLicenseCRC и CheckComponentLicense
вот если бы их можно было оттуда удалить или как-то перехватывать и не допускать выполнения.. пока я в этом не силен, но готов копать до победного конца.

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

Что касается Rainbow SENTiNEL - это защита основного софта через ключ, то есть используется этот драйвер для проверки лицензии. Поэтому возможно библиотека работает через этот драйвер. Но суть в том, что это уже наслойка авора проекта и я думаю что ее можно отключить. Отключить всю длл не получится, в ней есть математческие функции, нужные для работы проекта



Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 02 марта 2017 09:21
· Личное сообщение · #17

harbor пишет:
посмотрел ddl-ку PE Explorer-oм, и увидел там похожие функции на проверку лицензиинапример CheckLicenseCRC и CheckComponentLicense

Собственно, только эти 2. Остальные, если ориентироваться на имена, к лицензии не имеют отношения.

Удалять функции, не допускать их выполнения - не надо. Надо, чтобы они нужный результат возвращали. Попробуйте пропатчить CheckComponentLicense так, чтобы она всегда возвращала 0xFFFFFFFF.



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

Создано: 02 марта 2017 11:15 · Поправил: harbor
· Личное сообщение · #18

Prober я дизассемблировал ее PE експлорером, нашел коды этих функций
пока не знаю как найти возврат значения и чем править собственно все это, чтобы потом собрать обратно
может просто вырезать тела этих функций?
_________
upd.

вот на картинке вызов функции проверки.
все что нужно это убрать вызов call
что если место вызова функции просто забить нулями? там 5 байт начиная с адреса 432A09 по 432A0У
или тупо команду retn передвинуть на адрес 432A09, получится ил нет без декомпиляции/компиляции?))

7854_02.03.2017_EXELAB.rU.tgz - Screenshot-19.jpg

Добавлено спустя 18 часов 10 минут
Замена вызова call на retn не помогла, значит все же надо патчить CheckComponentLicense.
Вопрос только - а где функция возвращает значение, в стеке или в аккумуляторе?
а то может быть просто сразу в начале тела функции прописать в стек или акум 0xFFFFFFFF и вернуть его..

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



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

Создано: 07 марта 2017 13:50
· Личное сообщение · #19

Есть проблема, .dll накрыта themid'ой , после изнурительных работ, скрипт всё же сделал своё дело, и в конце всего этого была иконка UPLOAD , чтобы выгрузить fixed.dll но, после нажатия на upload ничего не вышло, файл не добавился, иконка upload это дополнение к оллидб как LoadDLL+ v0.1
Что можно сделать с этой напастью? ошибок не было, но он не выгружает это fixed




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 07 марта 2017 14:25
· Личное сообщение · #20

MoloF пишет:
Есть проблема, .dll накрыта themid'ой

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

-----
EnJoy!




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

Создано: 07 марта 2017 14:58
· Личное сообщение · #21

Вот проблема.
Я использовал скрипт LCF-AT и у него увидел такую нужную вещь как loaddll UPLOAD
то есть это дополненный loaddll.exe с расширенным функционалом.
Так вот, после того как скрипт выполнился, появляется это окно с сообщением и кнопкой UPLOAD
Чтобы можно было создать fixed.dll не трогая изначальный длл
У меня же он просто напросто не желает сохранять, или же он сохраняет но не туда куда надо, я не знаю куда.
Можно как нибудь это настроить или же что с этим делать?

Вот это дополнение
Смотрел туториалы у LCF-AT у него сразу всё добавлялось
Тутор могу скинуть как ссылку

eefc_07.03.2017_EXELAB.rU.tgz - dllUPLOAD.rar




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 07 марта 2017 15:37
· Личное сообщение · #22

MoloF пишет:
Тутор могу скинуть как ссылку

Кидай.

А ты заменил LoadDLL.exe в папке с OllyDbg на новый?

-----
EnJoy!




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

Создано: 07 марта 2017 16:09
· Личное сообщение · #23

естественно!!!
Jupiter пишет:
А ты заменил LoadDLL.exe в папке с OllyDbg на новый?


Вот ссылка : https://tuts4you.com/download.php?view.3318
там 1 из туторов, и ещё одна просьба, он запускает скрипт через newbies где найти такую же вещь?
и есть ли разница между использованием XP и 7(32бита)


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


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