Ребята, короче сделал я либ из длл, закинул все эти файла и хед файл в папку проэкта, подключил либ в проект, написал : if (ICQConnect(client,"login.icq.com", 5190, "610495154", "123",0)) Dialogs::ShowMessage("Connect"); else Dialogs::ShowMessage("Disconnect"); А запускаться на хочет, пишет такую ошибку: [Linker Error] Unresolved external '__stdcall ICQConnect(_ICQ_CLIENT *, char *, unsigned short, char *, char *, _PROXY_INFO *)' referenced from C:\USERS\WALKMN\DESKTOP\BOT\BOT\UNIT6.OBJ Пишу на C++ Builder, кто знает помогите , в чем проблемма?
кстати есть идея. ппрактически все клиенты держат плагины и имеют папочку для них. кто мешает в эту папочку положить малварь с расширением длл? профит - конкретный. асечка у всех либо доверена в фаере, либо вооьще является исключением. и как я убедился - большинство клиентов не мапят дллку в память, они ее сперва именно пытаются загрузить, а уж потом считать инфу по своим импортам.
sn0w , это понятно и так. Я написал как что я сделал с dll файлом, я сделал для нее библу командой "implib IcqMod.lib IcqMod.dll", добавил в проект либку,заинклудил аш файл... Вроде бы все правильно, но ошибка! Почему?Конкретно что не так? Может я не правильно чтото сделал? поправте что не так...
При выполнении команды : coff2omf IcqMod.lib New.lib Ошибка : COFF to OMF Converter Version 1.0.0.74 Copyright (c) 1999, 2000 Inprise Corporation ERROR: COFF error: IcqMod.lib (coffread.cpp, 1495) : This file is probably an OMF library
тоже мучался раньше и решил что подключать надо динамичаски.... сначала опиши прототипы функций, типа так Code: typedef ULONG (_stdcall ICQSendMsg)(PICQ_CLIENT client, char * UIN, char * msg); typedef ULONG (_stdcall ICQSendAuth)(PICQ_CLIENT client, char * UIN, char * msg); typedef ULONG (_stdcall ICQAuth)(PICQ_CLIENT client, char * UIN, ULONG AuthOk); typedef ULONG (_stdcall ICQConnect)(PICQ_CLIENT client, char * host, USHORT port, char * login, char * pass, PROXY_INFO* proxy); typedef void (_stdcall ICQClose)(PICQ_CLIENT client); typedef ULONG (_stdcall ICQReadMsg)(PICQ_CLIENT client, char* UIN, char* msg, int* msglen); потом в коде, обьявляешь переменные Code: ICQSendMsg* ICQSendMsgDll = NULL; ICQSendAuth* ICQSendAuthDll = NULL; ICQAuth* ICQAuthDll = NULL; ICQConnect* ICQConnectDll = NULL; ICQClose* ICQCloseDll = NULL; ICQReadMsg* ICQReadMsgDll = NULL; HINSTANCE hModule=NULL; bool LoadError = false; и грузишь ддл, выдирая оттдуда адреса на функции Code: hModule=::LoadLibrary(L"IcqMod.dll"); if (hModule!=NULL) { ICQSendMsgDll = (ICQSendMsg*)::GetProcAddresы((HMODULE)hModule,"ICQSendMsg"); ICQSendAuthDll = (ICQSendAuth*)::GetProcAddress ((HMODULE)hModule,"ICQSendAuth"); ICQAuthDll = (ICQAuth*)::GetProcAddress((HMODULE)hModule,"ICQAuth"); ICQConnectDll = (ICQConnect*)::GetProcAddress((HMODULE)hModule,"ICQConnect"); ICQCloseDll = (ICQClose*)::GetProcAddress((HMODULE)hModule,"ICQClose"); ICQReadMsgDll = (ICQReadMsg*)::GetProcAddress((HMODULE)hModule,"ICQReadMsg"); if (ICQSendMsgDll == NULL) LoadError = true; if (ICQSendAuthDll == NULL) LoadError = true; if (ICQAuthDll == NULL) LoadError = true; if (ICQConnectDll == NULL) LoadError = true; if (ICQCloseDll == NULL) LoadError = true; if (ICQReadMsgDll == NULL) LoadError = true; if (LoadError) ::FreeLibrary(hModule); } else "не загрузилии длл"; if (LoadError) "не нашли адрес какой либо функции"; надеюсь что это тебе поможет;-) пример использования Code: ICQ_CLIENT cl; сhar UIN[10]; char msg[4096]; char* message; int msglen; (*ICQConnectDll)(&cl, "login.icq.com", 5190,"UIN", "PASSWORD", 0); while (cl.status == ICQ_CLIENT_STATUS_CONNECTED) { if ((*ICQReadMsgDll)(&cl, UIN, msg, &msglen)) // если есть сообщение { (*ICQSendMsgDll)(&cl, UIN, "YES"); // пошлем слово YES } Sleep(1); // маленькая пауза чтобы не вешать систему }
Называеться такое DLL Hijacking. Kaimi уже писал на эту тему: http://kaimi.ru/2010/08/прибыльный-dll-hijacking/ Только вот вопрос, как ты собираешься распространять? Ну вот kaimi предложил через торренты, но имхо это не массово, а грузить через связки нет смысла, там сразу лоадер грузят и все))
пондравилась либа малым весом и не глючностью(как грится чем проще, тем лучше). Все до сих пор пашет. ТС, может с новым протоколом поработаешь ? Заметил, хоть старые и пашут, но лимиты у них хорошие в отличии от новых протоколов(сравнивал по квипу последнему и 9-ой версией протокола). Они падлы вроде как выложили протокол в открытый доступ официально, но опять с ограничениями(где то в вики есть про это). Автору спасибо, хоть и старо как мир, но лучшее, что есть(TICQClient - не годится под некоторые цели ). Для создания бота на машину жертве вообще прекрасно сегодня
а пролистать 5 страниц не судьба ? И на си(+так же на борланде) и на дельфи примеры выложили. Или тебе на например бейсике надо ? или просто троль ?
сейчас практически весь функционал бинарного протокола переведен на http, и складывается такое ощущение, что идет уход от бинарного протокола, хотя могу и ошибаться) так что, если и разбирать, то его он намного проще и удобнее...