Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Вопрос к 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
1-50009
MisterBin
2002-04-30 18:26
2002.05.16
Как получить названия только папок в текущей папке?


3-49886
Grusta
2002-04-19 22:38
2002.05.16
Открытие Excel-файла через ADOQuery ?


1-49926
Riko
2002-05-03 15:15
2002.05.16
Версия Винды...


3-49860
Sound
2002-04-19 12:37
2002.05.16
Хочу выучить Delphi+MySQL с чего начать?


1-49943
Man-In-Red
2002-05-03 22:50
2002.05.16
Как программно проверить formы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский