Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Вопрос к ASMатикам ;)   Найти похожие ветки 

 
Fellomena   (2002-03-05 16:07) [0]

Всем привет ! Есть такой вопрос: есть у меня dll-ка, когда я её подключаю к своей программой и пытаюсь вызвать любую из экспортируемых ф-ий на экран вылезает мессага о том, что dll не зарегестрированная (регестрация не дорогая, но дело в том, что контакт с производителем безвозвратно утерян, а dll уникальна в своём роде).
До сих пор я просто с помощью API все эти появляющиеся окошки просто "убивала", но мне стало интересно, насколько сложно сделать так, что бы, зная о существовании некой процедуры в dll из всех точек её вызова сразу же делать jmp назад, т.е. как бы она уже выполнилась ?
Проблема в том, что определённого адреса эта процедура не имеет (пока dll не загрузилась в АП какого-то процесса) - так ?

Сделав дамп, нашла процедуру, отвечающую за регестрацию (параметры её тоже известны).
Наверняка сочетание Name и Code проверяется на соответствие некой check сумме.

Не подскажите - в какую сторону копать ?
(приходилось пару раз в SoftICE работать - правда на уровне обезьяны выполняя предписания по отладке)
Уровень знания asm-а стремится по экспоненте к 0 ;\

Не подумайте, что я от хорошей жизни такими делами занимаюсь - мне 12$ за хорошую прогу не жалко, но некому их давать 8(

Просить знакомых сделать за меня - не хотса, самой интересно :)

Disclamer:
вопрос задаётся чисто из познавательных целей.
Автор не намерен нарушать копирайт.
=)


 
VuDZ   (2002-03-05 16:25) [1]

как я делаю в подобных случаях (случаи разные бывают (С)Ржевский) - ищю call .... на эту ф-ию. забиваю nop"ами.
Иногда в процедуре аутонтификации происходит установка по некоторому флажку, скажем, вот такой вот код:

mov registred, 0;
....
mov eax, res;
test eax, eax;
jz _notreg;
mov registred, 1;
ret 8;
.....
_notreg:
push mb_flags;
push title_ptr
push msg
push hwnd
call MessageBoxA;
ret 8;

В таком случае, надо забить jz nop"ами, что бы ничего не происходило, или попытаться выудить нужный код, обычно - это увлекательнй охоты :>


 
Fellomena   (2002-03-05 16:31) [2]

Теперь на огурцах и по пунктам:

1). Какой debuger проще ?
2). Алгоритм поиска.
3). Процес забивания.
4). Как сохранить отредактированный экземпляр ?

Я один раз по туториулу с помощью SoftICE Win32 прогу "отучила" пароли спрашивать, но я SoftICE дольше настраивала, чем прогу "приручала".
=)


 
VuDZ   (2002-03-05 17:01) [3]

1. SoftICE
делается всё очень просто если хочешь сломать - bpm adress RW, adress - адрес строки с паролем который ты ввела. В конце концов, софт прочитает эти данные и будет сверять их. Что бы их найти - s 0 L ffffffff "your_pass", по-моему так
2. Если всплывает обычное диалоговое окно MessageBox"ом, то тогда в SI: bpx MessageBoxA - когда дебагер сработает - shift-f11 и ты окажешся в софте после вызова call"a MessageBox.

Или ставишь бряк на начало процедуры сверки и смотришь, что происходит. Смотри куда ведут все jmp - если они выводят окошка "your money, please", запминай адрес и последовательность байт до, внутри jmp и после

3. я исользую или VS или HexEdit - находишь нужный jmp и забываешь его 0x90 (hex)

4. наверное save :>

PS это - не руководство ко взлому другого софта, а просто я показываю, как обычно тупо за"shit"та сделана. Не делайте так

PPS надеюсь вы в это поверили :>

Fellomena - лучше шли мне мыло, а то ведь забан%@$#!#%*..... connction lost :>


 
Sasha9   (2002-03-05 18:06) [4]

2VuDZ
я немного не понял: 90 нужно ставить вместо самой команды jmp или вместо её "параметров"(не знаю как это называется не самом деле)


 
VuDZ   (2002-03-05 18:19) [5]

ясно что вместо, а то ты получишь local GPF.


 
Sasha9   (2002-03-05 18:56) [6]


> ясно что вместо

по-моему ты что-то недописал; что такое local GPF


 
Bachin   (2002-03-05 19:22) [7]

2Sasha9:

все правильно написал. просто начни с асма :)
после команты процессора jmp идет адрес перехода и лучше править уже там, т.к. некоторые любят из нескольких точек входить в процедуру проверки :)))

GPF = General Protection Fault с вероятностью 98% т.к. ты можешь попытаться полезть неизвестно куда, но вероятность, что куда-то попадешь, и этот адрес будет доступен процессу (надеюсь jmp по смещению :) и это будет исполняемый кусок а не данные и ....
Ну надеюсь примерно понятно :)))


 
Sasha9   (2002-03-05 19:33) [8]

10ks


 
Sasha9   (2002-03-05 19:53) [9]

а во встроенном дельфийском дебаггере можно изменить jmp на nop?


 
VuDZ   (2002-03-05 21:19) [10]

Нет, AIK


 
Dimaond Cat   (2002-03-05 23:32) [11]

А не проще если известна процедура отвечающая за аутонтификацию (во слово-то какое) найти ее IF и поменять его с 0 на 1 или наоборот зависит от...


 
Fellomena   (2002-03-06 10:37) [12]

Спасибо VuDZ за науку...
Проблема, правда, чисто теоритического характера. Win32API: WS_HIDE + WM_CLOSE победа в жизни ;)

Я тебе после праздников отпишу, если что ;)


 
paul_shmakov   (2002-03-15 12:44) [13]

а я от себя еще посоветую. не всегда удобно ломать в softice. в некоторых случаях лучше воспользоваться W32Dasm (у меня версия 8.93) - это дизассемблер и дебагер в одном лице. попробуйте, в некоторых случаях гораздо проще в нем (особенно, если ваша dll всегда одну и ту же строку выдает, то w32dasm скорее всего поможет все отыскать минут за 5).
а в некоторых в softice. и еще обязательно скачайте и поставьте себе hiew (hex-редактор с дизассемблером и кучей всего). это та программа, за которую не жалко отдать денег.
http://sen.host.kemtel.ru/indexr.html#hiew
эти средства нужно совмещать и тогда все будет достаточно просто :)
но ассемблер нужно немного выучить, хотя его незнание можно частично компенсировать работая с дебагером.


 
VuDZ   (2002-03-15 16:17) [14]

IDA Pro - rulez
но более-менее солжную прогу не сломаешь статическим анализом, так как там могут стречаться такие вещи
call [eax + ecx]

push eax
....
pop edi
call edi

;entry point.....
ret 16 <- new value of IP, not a return adress

ну и прочее в таком духе.
Особенно табличная обработка хороша в этом плане



Страницы: 1 вся ветка

Текущий архив: 2002.05.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
1-49933
DiGiTaL
2002-04-27 18:32
2002.05.16
Компилятор выдает сообщение


3-49837
AFROLOV
2002-04-18 18:02
2002.05.16
А в чем разница между ExeсSQL и Open?


14-50132
Феликс
2002-04-08 16:33
2002.05.16
Кто знает сколько стоит сделать баннер?


1-49985
AMQ
2002-04-26 10:31
2002.05.16
RegisterHotKey


1-50004
Ronin
2002-04-30 02:08
2002.05.16
Как добавить ссылку на сайт в hlp файле?