Сейчас на форуме: 2nd, morgot, Rio, CDK123, zds, tyns777, tihiy_grom (+5 невидимых)

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

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

Создано: 08 апреля 2009 17:31
· Личное сообщение · #1

Привет всем.
Требуется вытащить из памяти, используемой приложением, строковое значение (пароль). Каким образом это можно сделать? Я пробовал присоединять OllyDebugger к процессу и искать нужное значение в правом нижнем фрейме, где показаны адреса в памяти и какие-то значения... Но искомого, заведомо введённого пароля там не нашёл. Как это нужно делать?



Ранг: 64.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 08 апреля 2009 17:35
· Личное сообщение · #2

Артмани



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

Создано: 08 апреля 2009 17:37
· Личное сообщение · #3

ArtMoney попробуй...

www.artmoney.ru/rus.htm




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

Создано: 08 апреля 2009 17:39
· Личное сообщение · #4

1. WinHex - поиск по всей памяти процесса
2. OllyDbg - окно дампа (левое нижнее ;) поиск бинарной строки в памяти (Ctrl-B), карта памяти Ctrl-M
3. WinDbg - дамп стека

-----
EnJoy!





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

Создано: 08 апреля 2009 18:41
· Личное сообщение · #5

Формулировка вопроса и подфорум вводят несколько в прострацию. Тебе надо кодить самому? Или найти любым софтом?



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

Создано: 08 апреля 2009 19:17 · Поправил: unconnected
· Личное сообщение · #6

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

Ещё теоретический вопрос: ну нашёл я эту строку, она находится в строке с адресом (адреса байт я не увидел в WinHex) XXXXXXX допустим. Так вот, на другом компьютере этот адрес будет тем же, или будет какое-то смещение?




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

Создано: 08 апреля 2009 19:44
· Личное сообщение · #7

OpenProcess, ReadProcessMemory VirtualQuery|VirtualQueryEx
либо инжект длл в память процесса и скан внутри процесса
VirtualQuery - для определения типа памяти

VirtualQuery MSDN

-----
EnJoy!




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

Создано: 08 апреля 2009 20:20
· Личное сообщение · #8

>>Ещё теоретический вопрос: ну нашёл я эту строку, она находится в строке с адресом (адреса байт я не увидел в WinHex) XXXXXXX допустим. Так вот, на другом компьютере этот адрес будет тем же, или будет какое-то смещение?

На это по ссылкам ответов нету вроде...




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 08 апреля 2009 20:31
· Личное сообщение · #9

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

-----
iNTERNATiONAL CoDE CReW




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

Создано: 08 апреля 2009 20:46
· Личное сообщение · #10

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




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 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




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

Создано: 09 апреля 2009 17:26
· Личное сообщение · #12

>>Ты лучше посмотри прогу в OllyDbg и найди место где этот пароль используется в коде, а потом в своей проге просто ставишь хук на это место и читаешь ключ из регистров, где-бы он в памяти не валялся.
А еше лучше выложи жертву, а то так гадать до второго пришествия можно, меняется адрес, не меняется адрес.

Асм я знаю на уровне mov ah 10h,поэтому что-то делать с регистрами для меня проблематично будет... А вытащить хочу пароль из памяти QIP.



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

Создано: 09 апреля 2009 17:44
· Личное сообщение · #13

Получение пароля для QIP 8040 через FindWindow с исходниками.
www.xakep.ru/post/42226/default.asp



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

Создано: 09 апреля 2009 17:53
· Личное сообщение · #14

Зачем мне FindWindow, если всё хранится в памяти? Я не хочу считывать с окна, ведь этот способ работает только при несохранении пароля, и не факт, что будет данный QIP.



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 09 апреля 2009 19:19
· Личное сообщение · #15

Vovan666 пишет:
Ты лучше посмотри прогу в OllyDbg и найди место где этот пароль используется в коде, а потом в своей проге просто ставишь хук на это место и читаешь ключ из регистров, где-бы он в памяти не валялся.


Расскажи подробне плз?..

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 09 апреля 2009 19:24
· Личное сообщение · #16

unconnected

Есть прога с сурцами для выдирания пассвурдов квипа из памяти. Погугли по "qip забыл пароль из памяти".

-----
Я медленно снимаю с неё UPX... *FF_User*




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

Создано: 09 апреля 2009 19:47
· Личное сообщение · #17

Насколько мне известно, при сохранении пароля, после закрытия квипа невозможно восстановить оригинальный пароль, только как-то поправленный md5 от него... Я в QIP PDA вытаскивал пароль, так там только md5 - пароля нет. А ломать md5 - не очень хорошая идея. Кроме того, для разных версий квипа как раз метод ][ будет работать вероятнее - я не думаю, что будут меняться названия классов. А вот адреса могут меняться при каждой сборке.




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 09 апреля 2009 19:56
· Личное сообщение · #18

AlexZ пишет:
Расскажи подробне плз?..

Я так понимаю, он предлагает ставить хук на тот адрес кода, где будет виден в регистре ключ и затем прочитать его из контекста потока процесса. По сути, это и есть сниффер.

-----
Программист SkyNet




Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 09 апреля 2009 21:32
· Личное сообщение · #19

tomac
Адреса меняются на разных билдах.
Пассвурд можно вытянуть из памяти, я так делал. Ну у меня квип передает пароль в открытом виде, т.к. не использую настройку с безопасным подключением.

FrenFolio пишет:
Я так понимаю, он предлагает ставить хук на тот адрес кода, где будет виден в регистре ключ и затем прочитать его из контекста потока процесса.

Всё равно не понял. Речь о дебаг-апи? Какой хук?

-----
Я медленно снимаю с неё UPX... *FF_User*





Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 09 апреля 2009 23:14
· Личное сообщение · #20

AlexZ пишет:
Всё равно не понял. Речь о дебаг-апи? Какой хук?

Можно обойтись и без дебаг-апи. Vovan666 неправильно выразился, термин хук применителен только к API-функциям. Здесь имеется ввиду установка брекпойнта на определенный адрес кода и просмотр содержимого регистра, в котором будет указатель на ключ, в памяти процесса проги. Посмотри пример, я привел выше сорец, там крякмис пожатый UPX и сниффер к нему.

-----
Программист SkyNet




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

Создано: 09 апреля 2009 23:35
· Личное сообщение · #21

Если задача в вирмейкниге - сделать утягивалку паролей, то нельзя надеяться на то, что люди используют именно нужный квип. И уж совсем мала, что не используют безопасный логин - мне кажется, сейчас сервера аола вообще не поддерживают авторизацию по ксору. Так что я бы стягивал версию квипа, пытался посмотреть в окне и посылал все это вместе с конфиг-файлом себе - для дальнейшего разбора. Тут уж можно не париться с сокрытием собственной активности и вешать квип (я так на скорую руку писал стягивалку серийника - она меняла байты на jmp ip там, где надо).
Если же задача в вытягивании пароля с конкретной версии без безопасного логина, тогда можно и бряк поставить там, где пароль читается \ пишется (когда он уже в памяти).



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 09 апреля 2009 23:37 · Поправил: Clerk
· Личное сообщение · #22

Кип 8092 не зависимо от того, скрыт пароль или нет возвращает указатель на него в одном из регистров общего назначения. Я один раз продебажил, не помню адрес процедуры.
Насчёт перехвата - есть один способ, пару раз преминял. Это трассировка блока. Тоесть например известно несколько инструкций, известно примерное расположение их, например что процедура вызывает несколько процедур, в одной из которых имеется эта последовательность инструкций. Мы начинаем трассировку на входе в первую процедуру и заканчиваем её по возврату. Такимже способом можно перезагружать отладочные регистры, тем самым поставить более 4-х точек останова. Для каждой части кода их нужно перезагружать в этом случае.



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

Создано: 09 апреля 2009 23:38
· Личное сообщение · #23

AlexZ пишет:
Пассвурд можно вытянуть из памяти, я так делал.

Для любой версии одинаково? Если да, то я не понимаю - компилятор делфы умудряется оптимизировать разный код в одни и те же адреса? Или меняются модули, не ответственные за логин, и линкер вообще не оптимизирует код? Или в делфе вообще нет раздельной компиляции? (Давно, давно не писал на делфе)



Ранг: 64.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 09 апреля 2009 23:43
· Личное сообщение · #24

tomac пишет:
так там только md5

этого достаточно для смены пароля на другой, есть даже специальные программы




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

Создано: 09 апреля 2009 23:45
· Личное сообщение · #25

IDA -> Disasm -> Debug
найдётся всё
потом по паттерну всё чо хошь найдёшь
ну или на крайняк дизасм прикрутишь
то, что ты пишешь сейчас, говорит о том, что ты даже не пытался дебажить с анализом кода в IDA

-----
EnJoy!



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


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