Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Просто очень простой лоадер |

21.12.2006, 11:26
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Просто очень простой лоадер
Простейший способ написания лоадера.
Вступление: Вот приобрёл себе карточку (Netgear WG511T) WiFi с поддержкой Injection (теперь буду снифать все встречающиеся на пути безпроводные сети), несмотря на то что в линухе есть её поддержка, согласитесь в винде горазно удобнее, не дело все не в этом, а в проге которая снифает этот трафик, прога называется "CommView Wifi", дело в том что снифает она не все пакеты, пока не приобретёшь лицензионную, так я и побежал покупать прогу для карточки, пользовательская цена на которую в 4 раза больше цены самой карточки.
Действия: Времени у меня было не много, так что я закинул её в ольку, а она говорит что прога запакована, ну я F9, после какого-то исключения Shift+F9 и вот она запустилась. Дальше нахожу первую попавшеюся функцию, находящуюся в самой программе, запускаю OllyDump, и указываю её в качестве Ентри поинт, дамплю и закидую в IDA.
Посик багов: Вспоминаю, что же мне в ней не нравилось, ах да вместо некоторых пакетов она пишет "ОЦЕНОЧНАЯ ВЕРСИЯ ОТОБРАЖАЕТ ТОЛЬКО ЧАСТЬ СОБРАННЫХ ПАКЕТОВ", эта строка находится в языковом файле под идентификатором "S_HALF_PACKETS", вот я и нахожу в сдампленом файле через IDA эту строку, нажимаю X (XRef), единственный XRef ведёт на занесение в edx адреса этой строки с последующим вызовом функции, а пару инструкций вверх стоит сравнение ячейки памяти с нулём и в случае не совпадения обход этого места другим путём, ну я сразу перехожу в ольку меняю jne на jmp и о чудо, я вижу абсолютно все пакеты, если поотлавливать занесение значений в эту переменную, думаю можно было бы и выйти на какую-нибудь общую функцию проверки на триал, а может и нет, но мне и этого вполне достаточно, и я решил писать лоадер. Чтоб не писать его на модификацию всего одного байта, я добавил туда и обход назойливого окна с благодарностью за использование приала, появляющегося во время закрытия программы, так что теперь модифицируются не 1, а 2 байта
Кодерство: Залез в справку в надежде найти ещё чего-нибудь что они заблокировали, чтоб исправить, и наткнулся на интерфейс подключаемых моделей. Если в программу модно подключить dll модули, то проблемы с лоадерами моментально отпадают, а тут ещё и интерфейс представлен элементарнейший, с примерами на С++ и Delphi, но достаточно уже того, что она загрузит этут dll(причём сама уже будет в распакованном и абсолютно незащищенном виде), а потом уже будет проверять, подходит она ей или нет, а dll загрузится, сделает что надо, и скажет что что-то не получилось, так что программа её сразу-же и выгрузит, даже килобайта памяти не потратится.
Задача лоадера: Заменить
Код:
6CACE0 75 33 jnz short 6CAD15
2
6CACE0 EB 33 jmp short 6CAD15
&
748366 75 4C jnz short 7483B4
2
748366 EB 4C jmp short 7483B4
Вот он лоадер, полный код
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
proc DllEntryPoint hinstDLL, fdwReason, lpvReserved
stdcall PatchByte, $6CACE0, $EB
stdcall PatchByte, $748366, $EB
xor eax, eax ; 0 - Косяк какой-то произошел, так что можешь выгружать
ret
endp
proc PatchByte, addr ,dta
invoke VirtualProtect, [addr], 1, PAGE_EXECUTE_READWRITE, esp, eax
mov al, byte[dta]
mov ebx, [addr]
mov byte[ebx], al
pop eax
invoke VirtualProtect, [addr], 1, eax, esp, eax
pop eax
ret
endp
data import
library KERNEL32,'KERNEL32.DLL'
import KERNEL32,VirtualProtect,'VirtualProtect'
end data
data fixups
end data
Думаю эта программа в пояснении не нуждается
--------
Кстати лоадер сохранять под именем "Custom.asm"
Ещё там какая-то чушь с сохранением, какой формат не выберешь, всё-равно сохраняется в .ncf, зато когда его переоткроешь, можно экспортировать в любой другой, например в .cap
Последний раз редактировалось hidden; 21.12.2006 в 20:27..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|