Страница: 1 | 2 | 3 | 4 |
Вопрос: Вопрос для тех кто считает себя хакером.
Добавлено: 15.09.05 16:50
Автор вопроса: костик
Ответы
Всего ответов: 48
Номер ответа: 16
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #16
Добавлено: 16.09.05 21:41
от ненаю, но мне чё-то кажеться из вб это не осуществимо... все подобные вещи писались на асме, ну может на Си... но опять же вставлялся асм.
Номер ответа: 17
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #17
Добавлено: 16.09.05 22:36
нда. геморная задача, юзай Joiner
Номер ответа: 18
Автор ответа:
nicolai
ICQ: 197368786
Вопросов: 6
Ответов: 91
Профиль | | #18
Добавлено: 17.09.05 06:48
где то в нете есть пример как спарить 2 экзешника но он не доработан (можно взять за основу)
кароче ищи в нете
Номер ответа: 19
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #19
Добавлено: 17.09.05 06:58
Всё таки секцию можно вставить. Там у VB-шного экзешника подгулявшее устройство оказалось. Сразу за последней таблицей секции идёт ссылка на MSVBVM60.DLL и если её сдвинуть на одну позицию вниз (конечно если выравнивание позволяет, а это в 99.99% случаев так), то можно на её место скопировать новую таблицу секции. С таблицами хорошо получилось, а вот сами секции я пока не пробовал.
Номер ответа: 20
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #20
Добавлено: 18.09.05 15:22
Сколько нудно байт для своего кода? В конце секции кода практически в любой программе имеется от нескольких десятков до нескольких сотен свободных байт...
00457BC0 00 DB 00
00457BC1 00 DB 00
00457BC2 00 DB 00
00457BC3 00 DB 00
00457BC4 00 DB 00
Вот туда можешь втыкнуть свой код! Только втыкать надо шестнадцатиричный дамп кода, как его получить? Написать программу, которая будет делать, то что нужно втыкнуть в ехе, скомпилить её, потом дизасмить и скопировать оттуда коды команд.
Дальше на точке входа пишешь jmp 00457BC0, а на месте 00457BC0(следующий код вызовет MessageBox):
00457BC0 6A 00 PUSH 0
00457BC1 50 PUSH EAX
00457BC2 50 PUSH EAX
00457BC3 6A 00 PUSH 0
00457BC4 E8 03360000 CALL <&user32.MessageBoxA>
Т.е. тебе надо записать вместо нулей: 6A 00 50 50 6A 00 E8 03 36 00 00
Ну есесно адрес вызова этой апи будет у тебя другим... короче принцип я думаю понятен
А вообще, на wasm.ru, есть отличная статья посвящнная этой теме, даже помойму не одна статья!
Ну и возврат на точку входа сделать не забудь.
Номер ответа: 21
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #21
Добавлено: 18.09.05 21:30
и как же средствами ВБ дезасмить прогу чтобы искать точки входа, изменять их итп... ???
Номер ответа: 22
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #22
Добавлено: 19.09.05 04:14
Для того чтобы узнать точку входа ничего дизассемблировать не нужно. Она находится в PE-заголовке и определяет смещение относительно Image Base.
Номер ответа: 23
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #23
Добавлено: 19.09.05 15:19
Это RVA, получаешь из него внутривайловый offset, по формуле:
Потом получаешь размер секции кода:
Потом начало секции кода:
Переводишь в offset.
И пошёл работать уже с самим файлом!!!!
Номер ответа: 24
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #24
Добавлено: 19.09.05 18:39
хм... ну незнаю, вообще интерестная тема, как время будет обязательно что-то почитаю и попробую что-то реализовать.
Номер ответа: 25
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #25
Добавлено: 20.09.05 04:47
А если в целовой нет <&user32.MessageBoxA> или адрес другой? Тот адрес, который тебе показывает дизассемблер, расчитывается загрузчиком автоматически (если по ординалу), в противном случае должна быть указана версия/подверсия операционки.
Номер ответа: 26
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #26
Добавлено: 20.09.05 05:36
Про ординал я прогнал, он тут не причём. Загрузчиком расчитываются адреса тех импортируемых функций, которые имеют нулевое значение.
Номер ответа: 27
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #27
Добавлено: 21.09.05 13:37
Ну я же пример просто показал, я не знаю ведь, что должен делать код...
Получаем указатель на директорию импорта:
IMAGE_NT_HEADERS.IMAGE_OPTIONAL_HEADER.DataDirectory(1)
Парсим её и ищем вызов этой функции... Если нашли читаем адрес и записываем его в наш дамп. Если же такой функции нет, то придётся править таблицу импорта, только в таком случае придётся править и таблицу секций и параметры самой директории импорта изменять, ГЕМОР... Короче это уже полиморфный движок получается... поэтому связываться я бы не советовал
Номер ответа: 28
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #28
Добавлено: 22.09.05 05:47
Ну эт кому как. По моему достаточно адресов LoadRibrary и GetProcAddress. Имея эти два адреса можно пользоваться любой Win32 API.
Вряд ли это можно назвать полиморфным движком. Полиморфный - это скорее тот, который не даёт обнаружить последовательность кодов (типа сигнатуры) вируса.
Номер ответа: 29
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #29
Добавлено: 22.09.05 14:35
да вообще ниче не надо Эти две функции вполне мона вытащить из kernel32 вручную доказательством этого служит существование примеров от yoda кажись
Номер ответа: 30
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #30
Добавлено: 22.09.05 16:40
Ну хорошо, вытащили из кернела, это действительно не проблема, IDA пока ещё никто не отменял А что дальше? Если я не ошибаюсь kernel32.dll user32.dll и подобные, все они вызывают native функции... ты хочешь ещё и native декомпилить? ИМХО проще уж табличку импорта подправить...