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

24.05.2007, 17:29
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
Предлагаю к реверсированию спамбот
Отрыл на компе одной девки с офиса. нам кстати пров доступ отрубил изза этого бота. Решил исследовать зверюгу (hччp://rapidshare.com/files/33118600/rpcc.dll.html).
1) Итак наша длль лежит по адресу system32/rpcc.dll. при этом доступ к файлу заблокирован.
2) Прописана в winlogon/notify. при удалении параметра он ессна появляется снова.
3) Итак, отрубаем его: открываем список потоков в контексте winlogon, и отправляем пару (те которые kernel32!CreateThread+0x24) в спячку. Затем убиваем.
4) Вытираем инит с winlogon/notify
5) Перегружаем тачку.
6) Берем терь живой бинарник с system32/rpcc.dll
7) Запакована либка хер знает чем - там при распаковке и ммх интсрукции используются. я так и не распаковал
8) Пишем простенький лоадер (я дамп хотел снять), который тока подгружает эту либу. Итак я написал следующее:
MessageBox(0,"About to load rpcc.dll...",0,0);
LoadLibrary("rpcc.dll");
MessageBox(0,"Now you can dump physical memory..."0,0);
...и не сработало. после запуска и первого мессаджа, процесс лоадера вылетал к чертям. причем также удалялся и экзешник лоадера, а его образ копировался в system32/rpcc.dll !)). Это ессно навело на мысль что после анпака, либа убивала свой процесс. Поставил сплайс на TerminateProcess().
Код:
#include <windows.h>
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/SECTION:.text,EWRX")
#pragma comment(linker, "/NODEFAULTLIB")
#pragma comment(linker, "/ENTRY:startcode")
#pragma pack(1)
typedef struct mov_n_jmp{
BYTE movEAXaddr;
BYTE func_addr[4];
BYTE jmpEAX[2];
}MOV_N_JMP;
#pragma pack()
BOOL __stdcall MyTerminateProcess(HANDLE,DWORD)
{
MessageBox(0,"TerminateProcess() called",0,0);
return TRUE;
}
void startcode()
{
DWORD addr, myaddr, prot;
MOV_N_JMP mj;
MessageBox(0,"Splicing TerminateProcess()...",0,0);
// prepare...
addr = (DWORD)GetProcAddress(GetModuleHandle("kernel32.dll"), "TerminateProcess");
myaddr = (DWORD)MyTerminateProcess;
VirtualProtect((void*) addr, 512, PAGE_EXECUTE_READWRITE, &prot);
// do a splice
mj.movEAXaddr = 0xB8;
mj.jmpEAX[0] = 0xFF;
mj.jmpEAX[1] = 0xE0;
CopyMemory(&mj.func_addr[0], &myaddr, 4);
CopyMemory((void*)addr, &mj, sizeof(mj));
MessageBox(0,"Patch ok, trying to call it...",0,0);
TerminateProcess(0,0);
MessageBox(0,"Now attempting to load rpcc.dll...",0,0);
LoadLibrary("rpcc.dll");
MessageBox(0,"Operation complete",0,0);
}
и опять таки ничего!! 2 потока в винлогон и копия тела. Вообщем предлагаю к реверсу! ж)
__________________
 
snow white world wide
Последний раз редактировалось sn0w; 24.05.2007 в 17:32..
|
|
|

24.05.2007, 18:56
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Ставь бряк на обработчик sysenter'ов, он может вообще функциями третьего кольца не пользуется
|
|
|

24.05.2007, 21:44
|
|
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме: 426226
Репутация:
726
|
|
Вряд ли его получится распаковать.
Из импорта использует только VertualProtect
Распаковывается частями, адреса АPI находит из экспорта системных библиотек, каждый раз при вызове любой функции. (торопится ему некуда)
У меня вообще не хочет работать.
После очередного вызова NtQueryInformationProcess, останавливается на исключении, не устанавливая SEН обработчик!
Запускал без отладчика, без антивиря и фаервола, Не работает.
|
|
|

25.05.2007, 14:57
|
|
Постоянный
Регистрация: 29.04.2007
Сообщений: 496
Провел на форуме: 2715445
Репутация:
588
|
|
Вроде знакомый криптор висит...
Вечером, если будет время анпакну
добавлено:
короче глянул, да там то, что я думал.
Под криптором упх, дальше сам давай
Код:
00791000 60 PUSHAD
00791001 BE 00B07800 MOV ESI,rpcc.<ModuleEntryPoint>
00791006 8DBE 0060FFFF LEA EDI,DWORD PTR DS:[ESI+FFFF6000]
0079100C 57 PUSH EDI
0079100D 83CD FF OR EBP,FFFFFFFF
00791010 EB 10 JMP SHORT rpcc.00791022
для отладки юзал OllyDbg + PhantOm для скрытия
не ставь обычные бряки на апи (int 3) юзай
железные (hardware)
Последний раз редактировалось Hellsp@wn; 25.05.2007 в 23:22..
|
|
|

26.05.2007, 18:13
|
|
Участник форума
Регистрация: 09.12.2006
Сообщений: 135
Провел на форуме: 426226
Репутация:
726
|
|
Прикольный глюк у этого бота.
Если prcc.dll грузится в память по адресу ниже 0х400000 , то не работает
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|