информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
link#2 14.10.01 01:27  Число просмотров: 1295
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
>А вот как это
> сделать никак не допру :(((
> ежели есть инфа каккая или УРЛы поделитесь плиз!

посмотри на www.reversing.net
там есть МАССА статей на тему реверсинга.
кстати - я не понял, почему, собственно, ты не воспользуешься IDA или SoftICE?
SoftIce позволяет же поставить брейкпоинт на вызов функции...
<programming>
[Win32] Перехват API ! 13.10.01 08:26  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Привет Народ!

Кто знает УРЛы на инфу по сабжу? ... смыльте плz! Перерыл кучу всякого дерьма в инете,.. нихрена стОящего не нашел! Так же интересует инфа по восстановлению функицй из ассмовского кода...

мыльздесь: neuron_viking@yahoo.com

thnx!

ЗЫ: отладка не катит!
[Win32] Перехват API ! 14.10.01 12:47  
Автор: SerpentFly <Vadim Smirnov> Статус: Member
<"чистая" ссылка>
Посмотри во первых http://home.od.ua/~blackw/reversfaq.htm. От себя могу добавить, что решение сильно зависит от операционной системы и от API которые ты собрался перехватывать. Кстати, соответствующая глава есть в последнем издании Рихтера. В общем прежде чем кричать читай библию ;))
link 13.10.01 22:35  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
http://sac-ftp.externet.hu/utilprog1.html
ищи тулзу API Spy v2.4
авось это то что тебе надо.
API Spy это немного не то :( 14.10.01 01:12  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
API Spy пройденый этап, прикольно канешна но немнога не то что нада...
мне нужно не только перехватить вызов функции но и еще получить переметры и их содержимое при этом. А вот как это сделать никак не допру :(((
ежели есть инфа каккая или УРЛы поделитесь плиз!
link#2 14.10.01 01:27  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
>А вот как это
> сделать никак не допру :(((
> ежели есть инфа каккая или УРЛы поделитесь плиз!

посмотри на www.reversing.net
там есть МАССА статей на тему реверсинга.
кстати - я не понял, почему, собственно, ты не воспользуешься IDA или SoftICE?
SoftIce позволяет же поставить брейкпоинт на вызов функции...
[Win32] link#2 14.10.01 23:36  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> >А вот как это
> > сделать никак не допру :(((
> > ежели есть инфа каккая или УРЛы поделитесь плиз!
>
> посмотри на www.reversing.net
> там есть МАССА статей на тему реверсинга.
> кстати - я не понял, почему, собственно, ты не
> воспользуешься IDA или SoftICE?
> SoftIce позволяет же поставить брейкпоинт на вызов
> функции...

потому как нужно мне програмно перехватить переданные параметры функции и подменить их(а может и нет)... как перехватывать сам вызов я прошарил а вот как перехватиь параметры еще нет :(((
[Win32] Здесь что одни ламеры собрались?! 13.10.01 21:40  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Крик души!!!
Xy}|{e :-) 13.10.01 22:15  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Крик души!!!
Ne ori !!!

Po-moemu eto ty voprosy zadavat' ne umeesh', vot nikto i ne reagiruet.
a vot eto :
"Так же интересует инфа по восстановлению функицй из ассмовского кода... " - menya povalilo na poval.

Tebe chego nado ???
Xy}|{e :-) 14.10.01 23:39  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Крик души!!!
> Ne ori !!!
>
> Po-moemu eto ty voprosy zadavat' ne umeesh', vot nikto i ne
> reagiruet.
> a vot eto :
> "Так же интересует инфа по восстановлению функицй из
> ассмовского кода... " - menya povalilo na poval.
>
> Tebe chego nado ???

Мне нада имея в наличии адрец функции узнать какие параметры ей переданы и узнать их содержимое. И еще мне нужно узнать где заканчивается эта функция т.е. я так полагаю нужно искать от стартовой точки до кода ret n ... я прав?
Xy}|{e :-) 15.10.01 01:12  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
>И еще мне
> нужно узнать где заканчивается эта функция т.е. я так
> полагаю нужно искать от стартовой точки до кода ret n ... я
> прав?

Ну вааще-то ф-ция не ОБЯЗАНА иметь один ret. Скажем такой пример
mov eax,333
call Func1
...
...
...
Func1:
cmp eax,666
jge Label1
xor ebx,ebx
ret
Label1
mov ebx,1
ret

Но не знаю как в WinApi может там все и имеют один ret, хз
+Чтоб искать ret нужен хотя бы дизассемблер длин комманд т.е. просто поиск CAxxxx(retf xxxx) или C2xxxx(retn xxxx), а также есть просто C3(retn) CB(retf)
Xy}|{e :-), И что же мне теперь со всем этим делать?! 15.10.01 05:23  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Ну вааще-то ф-ция не ОБЯЗАНА иметь один ret. Скажем такой
> пример
> mov eax,333
> ...
> xor ebx,ebx
> ret
> Label1
> mov ebx,1
> ret
>
> Но не знаю как в WinApi может там все и имеют один ret, хз
> +Чтоб искать ret нужен хотя бы дизассемблер длин комманд
> т.е. просто поиск CAxxxx(retf xxxx) или C2xxxx(retn xxxx),
> а также есть просто C3(retn) CB(retf)

... повеситься чтоль?!
Каким образом можно решить два вопроса:

1) Как вычислить размер функции зная только её начало(адрес первой команды в памяти)?
2) Как получить параметры переданные этой функции если известно число параметров, в каком порядке они передаются и размер параметров(их тип)?
Xy}|{e :-), И что же мне теперь со всем этим делать?! 15.10.01 13:15  
Автор: SerpentFly <Vadim Smirnov> Статус: Member
<"чистая" ссылка>
> 1) Как вычислить размер функции зная только её начало(адрес
> первой команды в памяти)?

А как это делают дизассемблеры? Проследить все возжможные ветвления, например, и из адреса начала вычесть адрес последнего ret.

> 2) Как получить параметры переданные этой функции если
> известно число параметров, в каком порядке они передаются и
> размер параметров(их тип)?

Берешь указатель стека, все параметры в нем последовательно сложены, в чем проблема?
Xy}|{e :-), И что же мне теперь со всем этим делать?! 15.10.01 13:12  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> 1) Как вычислить размер функции зная только её начало(адрес
> первой команды в памяти)?
> 2) Как получить параметры переданные этой функции если
> известно число параметров, в каком порядке они передаются и
> размер параметров(их тип)?

1)Ну попробуй все таки искать те инструкции которые я написал с помощью дизасемблера длин команд можно написать самому можно взять отседа http://z0mbie.host.sk/index.html#down но там он глючит, с 32хбитным кодом так что придкться немного доделать... Ну и конечно 100% гарантии что ret который ты найдешь это истинный конец ф-ции нет.
2)Извлечь их из стека. Параметры помещаються в стек в обратном порядке т.е. сначала push xxx - последний, push yyy - предпоследний и т.д. + не надо забывать что call помещает в стек адрес возврата. Так что это проще всего, конечно надо знать кол-во параметров и их тип.
Тогда пачиму ЭТО не работает ?! 15.10.01 19:12  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вычисляю(к примеру) адрес MessageBox, записываю туда вместо первых 5и байт свои байты FF 0F 10 40 00 - это jmp MyStubFuncAddr, но вместо вызова моей функции(MyStubFunc) я получаю ошибку доступа к памяти в какое-то левое место; отладчик при этом дизассемблирет этот код как ДВЕ! отдельных инструкции:
FF 0F dec dword ptr [edi]
10 40 00 adc byte ptr [eax],al - и вот здесь эта хрень вылетает!!!
это совсем не то что я хотел, а я хотел, как уже сказал, чтобы выполнилась моя инструкция FF 0F 10 40 00. Что вообще происходит? С call таже самая фигня :(((. Атрибуты страницы ессно меняю на PAGE_EXECUTE_RW.
Тогда пачиму ЭТО не работает ?! 16.10.01 09:16  
Автор: z0 <z0> Статус: Member
<"чистая" ссылка>
> Вычисляю(к примеру) адрес MessageBox, записываю туда вместо
> первых 5и байт свои байты FF 0F 10 40 00 - это jmp
> MyStubFuncAddr, но вместо вызова моей функции(MyStubFunc) я
> получаю ошибку доступа к памяти в какое-то левое место;
> отладчик при этом дизассемблирет этот код как ДВЕ!
> отдельных инструкции:
> FF 0F dec dword ptr [edi]
> 10 40 00 adc byte ptr [eax],al - и вот здесь
> эта хрень вылетает!!!
> это совсем не то что я хотел, а я хотел, как уже сказал,
> чтобы выполнилась моя инструкция FF 0F 10 40 00. Что вообще
> происходит? С call таже самая фигня :(((. Атрибуты страницы
> ессно меняю на PAGE_EXECUTE_RW.

а почему тебе можно, понимаешь, байты в памяти менять а какой-нить другой проге нельзя. верни атрибут на PAGE_NOT_PRESENT и обрабатывай exception 0e с проверкой CRC на странице
а если серьезно, то по внешнему виду похоже ты нарвался на fuxup correction - адрес-то у тебя в косвенном джампе есть
как только я вижу адрес - первая мысля - а фиксапы как?
Тогда пачиму ЭТО не работает ?! 15.10.01 20:15  
Автор: SerpentFly <Vadim Smirnov> Статус: Member
<"чистая" ссылка>
Проверь стоит ли у тебя в системе драйвер ruky.sys. Если нет то поищи...

А вообще, что софтайс вообще не судьба воспользоваться? Пеньку ясно что что-то ты сделал криво, так поставь туда бреакпойнт. Или ты думаешь тут экстрасенсы организуют удаленную отладку по астральному каналу?
Тогда пачиму ЭТО не работает ?! 15.10.01 21:42  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Проверь стоит ли у тебя в системе драйвер ruky.sys. Если
> нет то поищи...
>
> А вообще, что софтайс вообще не судьба воспользоваться?
> Пеньку ясно что что-то ты сделал криво, так поставь туда
> бреакпойнт. Или ты думаешь тут экстрасенсы организуют
> удаленную отладку по астральному каналу?

Причина вот в чем, то что я пытался записать как jmp MyStubFuncAddr или FF 00 40 D0 10 но на самом деле превращается в FF 00 80 42 04 т.е. что то типа jmp неизвестно_куда, почему так получается?! Тогда я посмотрел дизасмом как будет выглядеть call MyStubFuncAddr, пусть MyStubFuncAddr = 0x004010D0, тогда по идее это должно быть: FF D0 10 40 00, НО! нифига подобного, почему-то это превращяется в FF 55 F8. Почему так??? И ккаким таким образом возникает подобное преобразование? А вот если я запишу FF 55 F8 то все пучком заработает!
Тогда пачиму ЭТО не работает ?! 16.10.01 00:23  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Причина вот в чем, то что я пытался записать как jmp
> MyStubFuncAddr или FF 00 40 D0 10 но на самом деле
> превращается в FF 00 80 42 04 т.е. что то типа jmp
> неизвестно_куда, почему так получается?! Тогда я посмотрел
> дизасмом как будет выглядеть call MyStubFuncAddr, пусть
> MyStubFuncAddr = 0x004010D0, тогда по идее это должно быть:
> FF D0 10 40 00, НО! нифига подобного, почему-то это
> превращяется в FF 55 F8. Почему так??? И ккаким таким
> образом возникает подобное преобразование? А вот если я
> запишу FF 55 F8 то все пучком заработает!

Ну вообще я ничего не стану утверждать но все же мне кажеться что jmp начинаеться с 0xE9, а FF вроде это либо inc хитрый либо jmp еще хитрее вроде что-то jmp по адресу регистр+число 0xE9 по крайней мере это 100% jmp :))
О точно то что ты написал будет как
0xFFD0104000=
call eax
adc [eax][0],al

В общем хрен знает но с FF00xxxx тебя похоже обманули... Делай E9xxxxxxxx
Тогда пачиму ЭТО не работает ?! 16.10.01 02:03  
Автор: neuron_viking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Причина вот в чем, то что я пытался записать как jmp
> > MyStubFuncAddr или FF 00 40 D0 10 но на самом деле
> > превращается в FF 00 80 42 04 т.е. что то типа jmp
> > неизвестно_куда, почему так получается?! Тогда я
> посмотрел
> > дизасмом как будет выглядеть call MyStubFuncAddr,
> пусть
> > MyStubFuncAddr = 0x004010D0, тогда по идее это должно
> быть:
> > FF D0 10 40 00, НО! нифига подобного, почему-то это
> > превращяется в FF 55 F8. Почему так??? И ккаким таким
> > образом возникает подобное преобразование? А вот если
> я
> > запишу FF 55 F8 то все пучком заработает!
>
> Ну вообще я ничего не стану утверждать но все же мне
> кажеться что jmp начинаеться с 0xE9, а FF вроде это либо
> inc хитрый либо jmp еще хитрее вроде что-то jmp по адресу
> регистр+число 0xE9 по крайней мере это 100% jmp :))
> О точно то что ты написал будет как
> 0xFFD0104000=
> call eax
> adc [eax][0],al
>
> В общем хрен знает но с FF00xxxx тебя похоже обманули...
> Делай E9xxxxxxxx

Делал, абсолютно тоже самое - т.е. адрес функции коверкается, т.е. как я уже говорил, мне нужо чтобы в памяти были E9(или E8, пофигу!)D0 10 40 00, а на самом деле почему то в памяти оказывается E9 55 F8, и еще раз говорю, что если именно эту штуку записать в память то все корректно срабатывает :((( ... откуда она берется и как осуществляется преобразование D0 10 40 00 -> 55 F8 ???? я в панике!
Тогда пачиму ЭТО не работает ?! 16.10.01 19:34  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Делал, абсолютно тоже самое - т.е. адрес функции
> коверкается, т.е. как я уже говорил, мне нужо чтобы в
> памяти были E9(или E8, пофигу!)D0 10 40 00, а на самом деле
> почему то в памяти оказывается E9 55 F8, и еще раз говорю,
> что если именно эту штуку записать в память то все
> корректно срабатывает :((( ... откуда она берется и как
> осуществляется преобразование D0 10 40 00 -> 55 F8 ????
> я в панике!

Ну во первых когда меняеться значение? Ты пробовал просичитать его сразу после записи? И в конце концов поставь ты себе SoftIce и bpm там поставь на MessageBox тогда все станет ясно моментом.
1  |  2 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach