[релиз] IcqMod DLL

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 28 Nov 2009.

  1. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Ребята, короче сделал я либ из длл, закинул все эти файла и хед файл в папку проэкта, подключил либ в проект, написал :

    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, кто знает помогите , в чем проблемма?
     
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,300
    Reputations:
    327
    кстати есть идея. ппрактически все клиенты держат плагины и имеют папочку для них. кто мешает в эту папочку положить малварь с расширением длл? профит - конкретный. асечка у всех либо доверена в фаере, либо вооьще является исключением. и как я убедился - большинство клиентов не мапят дллку в память, они ее сперва именно пытаются загрузить, а уж потом считать инфу по своим импортам.
     
    2 people like this.
  3. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,300
    Reputations:
    327
    ебана, она не хочет ЛИНКОВАТЬСЯ понимаешь не? и в итоге сборщик проекта шлет тебя на юг.
     
  4. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    sn0w , это понятно и так. Я написал как что я сделал с dll файлом, я сделал для нее библу командой "implib IcqMod.lib IcqMod.dll", добавил в проект либку,заинклудил аш файл...

    Вроде бы все правильно, но ошибка! Почему?Конкретно что не так? Может я не правильно чтото сделал? поправте что не так...
     
  5. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Может выложит кто либку, может я не правильно сделал либлу?
     
  6. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    При выполнении команды : 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
     
  7. PAXAn

    PAXAn Elder - Старейшина

    Joined:
    14 Jun 2008
    Messages:
    43
    Likes Received:
    3
    Reputations:
    0
    тоже мучался раньше и решил что подключать надо динамичаски....

    сначала опиши прототипы функций, типа так
    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); // маленькая пауза чтобы не вешать систему
    }
     
    #47 PAXAn, 24 Feb 2011
    Last edited: 24 Feb 2011
    2 people like this.
  8. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Ура))) Спасибо большое, все заработало!!!
     
  9. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Называеться такое DLL Hijacking.
    Kaimi уже писал на эту тему: http://kaimi.ru/2010/08/прибыльный-dll-hijacking/

    Только вот вопрос, как ты собираешься распространять? Ну вот kaimi предложил через торренты, но имхо это не массово, а грузить через связки нет смысла, там сразу лоадер грузят и все))
     
  10. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Через свою сборку клиента, например, или же плагины для него.
     
  11. Adroit

    Adroit New Member

    Joined:
    1 Aug 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    народ, скиньте плиз рабочий код данного бота на С++ , очень надо.
     
  12. fl00der

    fl00der Moderator

    Joined:
    17 Dec 2008
    Messages:
    1,027
    Likes Received:
    311
    Reputations:
    86
    Охуетительно.
     
    _________________________
  13. adenaden

    adenaden New Member

    Joined:
    2 Apr 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    пондравилась либа малым весом и не глючностью(как грится чем проще, тем лучше). Все до сих пор пашет.
    ТС, может с новым протоколом поработаешь ? Заметил, хоть старые и пашут, но лимиты у них хорошие в отличии от новых протоколов(сравнивал по квипу последнему и 9-ой версией протокола). Они падлы вроде как выложили протокол в открытый доступ официально, но опять с ограничениями(где то в вики есть про это).
    Автору спасибо, хоть и старо как мир, но лучшее, что есть(TICQClient - не годится под некоторые цели :) ). Для создания бота на машину жертве вообще прекрасно сегодня
     
    #53 adenaden, 19 Apr 2012
    Last edited: 19 Apr 2012
  14. adenaden

    adenaden New Member

    Joined:
    2 Apr 2012
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    а пролистать 5 страниц не судьба ? И на си(+так же на борланде) и на дельфи примеры выложили. Или тебе на например бейсике надо ? :D :D :D :D или просто троль ?
     
  15. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    сейчас практически весь функционал бинарного протокола переведен на http, и складывается такое ощущение, что идет уход от бинарного протокола, хотя могу и ошибаться)
    так что, если и разбирать, то его он намного проще и удобнее...