![]() |
eXeL@B —› Программирование —› Поиск значения в памяти |
Посл.ответ | Сообщение |
|
Создано: 08 апреля 2009 17:31 · Личное сообщение · #1 Привет всем. Требуется вытащить из памяти, используемой приложением, строковое значение (пароль). Каким образом это можно сделать? Я пробовал присоединять OllyDebugger к процессу и искать нужное значение в правом нижнем фрейме, где показаны адреса в памяти и какие-то значения... Но искомого, заведомо введённого пароля там не нашёл. Как это нужно делать? ![]() |
|
Создано: 08 апреля 2009 17:35 · Личное сообщение · #2 |
|
Создано: 08 апреля 2009 17:37 · Личное сообщение · #3 |
|
Создано: 08 апреля 2009 17:39 · Личное сообщение · #4 |
|
Создано: 08 апреля 2009 18:41 · Личное сообщение · #5 |
|
Создано: 08 апреля 2009 19:17 · Поправил: unconnected · Личное сообщение · #6 Самому, причём на дельфи ![]() Спасибо, WinHex помог, я и раньше на него косился, но думал, что он только открывать файлы может... Вот так бывает, за отладчиком пару часов сидел, найти не мог, а редактором за три минуты) Ещё теоретический вопрос: ну нашёл я эту строку, она находится в строке с адресом (адреса байт я не увидел в WinHex) XXXXXXX допустим. Так вот, на другом компьютере этот адрес будет тем же, или будет какое-то смещение? ![]() |
|
Создано: 08 апреля 2009 19:44 · Личное сообщение · #7 OpenProcess, ReadProcessMemory VirtualQuery|VirtualQueryEx либо инжект длл в память процесса и скан внутри процесса VirtualQuery - для определения типа памяти ----- EnJoy! ![]() |
|
Создано: 08 апреля 2009 20:20 · Личное сообщение · #8 |
|
Создано: 08 апреля 2009 20:31 · Личное сообщение · #9 |
|
Создано: 08 апреля 2009 20:46 · Личное сообщение · #10 Ты лучше посмотри прогу в OllyDbg и найди место где этот пароль используется в коде, а потом в своей проге просто ставишь хук на это место и читаешь ключ из регистров, где-бы он в памяти не валялся. А еше лучше выложи жертву, а то так гадать до второго пришествия можно, меняется адрес, не меняется адрес. ![]() |
|
Создано: 08 апреля 2009 21:09 · Поправил: FrenFolio · Личное сообщение · #11 unconnected Если найдешь место где в регистре код высвечивается, то можешь сниффер сделать. Даже вовсе и не обязательно кодить чего-то, есть такая прога от AoRe, для мейка снифферов. Но если же нужно сделать все же, то вот пример сниффера rapidshare.com/files/218980920/Serial_sniffer_sources.rar А нет, от A4RE прожка! Serial Sniffer Creator 2.0 By MouradPr | AT4RE ----- Программист SkyNet ![]() |
|
Создано: 09 апреля 2009 17:26 · Личное сообщение · #12 >>Ты лучше посмотри прогу в OllyDbg и найди место где этот пароль используется в коде, а потом в своей проге просто ставишь хук на это место и читаешь ключ из регистров, где-бы он в памяти не валялся. А еше лучше выложи жертву, а то так гадать до второго пришествия можно, меняется адрес, не меняется адрес. Асм я знаю на уровне mov ah 10h,поэтому что-то делать с регистрами для меня проблематично будет... А вытащить хочу пароль из памяти QIP. ![]() |
|
Создано: 09 апреля 2009 17:44 · Личное сообщение · #13 |
|
Создано: 09 апреля 2009 17:53 · Личное сообщение · #14 |
|
Создано: 09 апреля 2009 19:19 · Личное сообщение · #15 |
|
Создано: 09 апреля 2009 19:24 · Личное сообщение · #16 |
|
Создано: 09 апреля 2009 19:47 · Личное сообщение · #17 Насколько мне известно, при сохранении пароля, после закрытия квипа невозможно восстановить оригинальный пароль, только как-то поправленный md5 от него... Я в QIP PDA вытаскивал пароль, так там только md5 - пароля нет. А ломать md5 - не очень хорошая идея. Кроме того, для разных версий квипа как раз метод ][ будет работать вероятнее - я не думаю, что будут меняться названия классов. А вот адреса могут меняться при каждой сборке. ![]() |
|
Создано: 09 апреля 2009 19:56 · Личное сообщение · #18 |
|
Создано: 09 апреля 2009 21:32 · Личное сообщение · #19 tomac Адреса меняются на разных билдах. Пассвурд можно вытянуть из памяти, я так делал. Ну у меня квип передает пароль в открытом виде, т.к. не использую настройку с безопасным подключением. FrenFolio пишет: Я так понимаю, он предлагает ставить хук на тот адрес кода, где будет виден в регистре ключ и затем прочитать его из контекста потока процесса. Всё равно не понял. Речь о дебаг-апи? Какой хук? ----- Я медленно снимаю с неё UPX... *FF_User* ![]() |
|
Создано: 09 апреля 2009 23:14 · Личное сообщение · #20 AlexZ пишет: Всё равно не понял. Речь о дебаг-апи? Какой хук? Можно обойтись и без дебаг-апи. Vovan666 неправильно выразился, термин хук применителен только к API-функциям. Здесь имеется ввиду установка брекпойнта на определенный адрес кода и просмотр содержимого регистра, в котором будет указатель на ключ, в памяти процесса проги. Посмотри пример, я привел выше сорец, там крякмис пожатый UPX и сниффер к нему. ----- Программист SkyNet ![]() |
|
Создано: 09 апреля 2009 23:35 · Личное сообщение · #21 Если задача в вирмейкниге - сделать утягивалку паролей, то нельзя надеяться на то, что люди используют именно нужный квип. И уж совсем мала, что не используют безопасный логин - мне кажется, сейчас сервера аола вообще не поддерживают авторизацию по ксору. Так что я бы стягивал версию квипа, пытался посмотреть в окне и посылал все это вместе с конфиг-файлом себе - для дальнейшего разбора. Тут уж можно не париться с сокрытием собственной активности и вешать квип (я так на скорую руку писал стягивалку серийника - она меняла байты на jmp ip там, где надо). Если же задача в вытягивании пароля с конкретной версии без безопасного логина, тогда можно и бряк поставить там, где пароль читается \ пишется (когда он уже в памяти). ![]() |
|
Создано: 09 апреля 2009 23:37 · Поправил: Clerk · Личное сообщение · #22 Кип 8092 не зависимо от того, скрыт пароль или нет возвращает указатель на него в одном из регистров общего назначения. Я один раз продебажил, не помню адрес процедуры. Насчёт перехвата - есть один способ, пару раз преминял. Это трассировка блока. Тоесть например известно несколько инструкций, известно примерное расположение их, например что процедура вызывает несколько процедур, в одной из которых имеется эта последовательность инструкций. Мы начинаем трассировку на входе в первую процедуру и заканчиваем её по возврату. Такимже способом можно перезагружать отладочные регистры, тем самым поставить более 4-х точек останова. Для каждой части кода их нужно перезагружать в этом случае. ![]() |
|
Создано: 09 апреля 2009 23:38 · Личное сообщение · #23 AlexZ пишет: Пассвурд можно вытянуть из памяти, я так делал. Для любой версии одинаково? Если да, то я не понимаю - компилятор делфы умудряется оптимизировать разный код в одни и те же адреса? Или меняются модули, не ответственные за логин, и линкер вообще не оптимизирует код? Или в делфе вообще нет раздельной компиляции? (Давно, давно не писал на делфе) ![]() |
|
Создано: 09 апреля 2009 23:43 · Личное сообщение · #24 |
|
Создано: 09 апреля 2009 23:45 · Личное сообщение · #25 |
![]() |
eXeL@B —› Программирование —› Поиск значения в памяти |