информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
я же ответил на ЭТОТ вопрос 17.10.01 06:11  Число просмотров: 1378
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> ааааа! @$тель этож относительный переход .. но я такой
> тупой шо серавно не понимаю какм образом произойдет переход
> с 0х77012320 на 0х00401220
> если поставить jmp 0х80801282? ведь при вычитании
> получается отрицательное число! а разве jmp rel32 нету?

0х80801282 - это отрицательное число :)
(старший бит = 1)
просто не думай о знаке - оно так сделано, что само собой правильно получается

я наглючил
это наоборот в win32 нету rel16 - есть только rel32
(см. объяснение Heromantor'a)
<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: 0 s   Design: Vadim Derkach