Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Airc - Antichat IRC client (c) AlexTheC0d3r (https://forum.antichat.xyz/showthread.php?t=108050)

AlexTheC0d3r 25.02.2009 22:53

Airc - Antichat IRC client (c) AlexTheC0d3r
 
ПОКА НЕАКТУАЛЬНО, ВСЕ ДРУЖНЕНЬКО ЖДЕМ ОБНОВЛЕНИЯ

Думаю в халяве этому не место. Клиент имеет уже более-менее завершенный вид, завтра выложу source.

Поставил себе задачу написать простенький IRC клиент только для очатовцев, с возможностью общаться на любом из каналов. Т.е. если вдруг новичок(или не посвященный в этом деле) задастся вопросом, то ему будет проще спросить у людей в ирке, чем лишний раз писать на форуме.

Скриншот:

http://savepic.ru/492913.jpg


http://savepic.ru/498033.jpg


http://savepic.ru/499057.jpg
Функционал:
v0.1
[*] Отправка сообщений
[*] Чтение сообщений
[*] Показ сообщений Action(/me)
[*] Возможность общаться на любом из каналов

23/02/2009

v0.2
[*] Добавлены системные сообщения о notice/userQuit/UserJoin

[*] Добавлены настройки
[*] Изменен стиль оформления на Antichat Style

[*] Сворачивание в трей
[*] Иконки (спасибо Godfather_Bulan)

[*] Добавлена функция форматирования текста (жирн.\подчерк.)
[*] Настройки хранятся в файле settings.dat
[*] Функция сохранения лога сообщений :)


От 25.02.09

v0.3
[*] Добавлен приват, открытие приват окна при отправке вам сообщения.

[*] Отправка приватных сообщений

[*] распознавание тега /me(action) при вводе текста типа /me кушает

[*] добавлена функция написания выделенного ника перед сообщением, если стоит галочка в соответствующем пункте.

[*] Убраны некоторые баги и недочеты

[*] Добавлена отправка на Enter

[*] Добавлены хоткеи (Ctrl+U - подчеркнутый текст; Ctrl+B - жирный текст)


Добавления от 25.02.09

v0.4
[*] Более глубоко обработана работа с приватом

[*] Добавлен PopUP при нажатии правой кнопкой мыши на окно пользователей (Слапы)

[*] Добавлена функция смены оформления на "Белый" и "Ачат стиль" (Смена - правой кнопкой мыши на форме!)

[*] Добавлено новое поле Edit для ваших собственных слапов :)




Средства реализации:

Программа написана в Delphi с использованием компонента IdIRC.

Внимание: это четвертая версия моего клиента. Пишите ваши пожелания сюда. Также оставляйте свои комментарии. Сделано это было только для вас.

Сейчас программа в процессе доработки, так что любое из ваших пожеланий будет учтено.

Т.к. программа в стадии разработки - исходники не оставляю. Все будет, когда она примет достаточно завершенный вид.

Тестим и оставляем комментарии!!!!!!


Ссылки:

0.4
exe

http://slil.ru/28751064

http://alexthec0d3r.3rss.ru/downloads/airc.zip

Source

http://slil.ru/28751063

http://alexthec0d3r.3rss.ru/downloads/airc_s.zip

syava 25.02.2009 23:49

поставил плюсик, ждем фтп клиент для онтечатовцев с использованием компонента куйтамFTP, и тому подобное

AlexTheC0d3r 26.02.2009 09:08

сорцы выложу чуть позже

AlexTheC0d3r 26.02.2009 15:02

Выложил сорцы :)

frost2pac 26.02.2009 17:47

Ждем сорцы ;)

[Dezzter] 26.02.2009 17:55

ярко зелёные буквы на чёрном фоне уже давно не тру, а так молодец

Flame of Soul 26.02.2009 18:35

Простите великодушно но при компиляции требует setings.dat файлик (название может быть не точное). Прошу его включить в сорцы, или указать что в нем находится. Дизай без комментариев ибо если есть сорцы, то можно поменять или попросить того кто может поменят если у кого не стоит Delphi.

AlexTheC0d3r 26.02.2009 19:08

требует settings.dat

можно взять с скомпилированной версии


хотя если посмотреть исходник можно сообразить что в этом файле должно быть :)

Chaak 27.02.2009 20:43

Клиент CIIC , тема Matrix.(285кб с 4 темами). На ассемблере.
http://s43.radikal.ru/i101/0902/61/bff9f9d789fat.jpg
Чем не античат клиент)? Очень даже удобный. А у ТС, не в обиду, неюзабельный.

geezer.code 27.02.2009 20:48

зато свой.

MaZaHaKer 28.02.2009 20:37

тс , функция копировать при нажатии правой кнопки мыши не помешала бы ...

AlexTheC0d3r 28.02.2009 21:28

что тебе мешает скопировать Ctrl+C?

FALTONICK 29.03.2009 23:29

Цитата:

Сообщение от AlexTheC0d3r
что тебе мешает скопировать Ctrl+C?

он этого не знает! не плохо замутил:)

Хелпер 30.03.2009 15:04

ТС, понравился твой irc Клиент. Сделай возможность конектиться к другим серверам.

MaTpOc 30.03.2009 15:38

Уже давно юзаю, все ок, багов не нашел, т к сижу на ирке ачата по мне все отлично вышло.

кстати, http://slil.ru/26998410 уже не жива.

AlexTheC0d3r 03.04.2009 19:33

всегда есть вариант от kyzmi4 (файлообменник)

Fooog 10.12.2009 23:10

Если у кого ещё где то есть этот клиент на компе, залейте куда нибудь.
Когда то давно юзал его, хочу вернуть. :(
ЗЫ
Простите за археологию.

AlexTheC0d3r 08.01.2010 01:48

счас залью

AlexTheC0d3r 08.01.2010 01:54

http://slil.ru/28450621 - source

http://slil.ru/28450626 - клиент

MaTpOc 03.03.2010 15:40

Цитата:

Сообщение от AlexTheC0d3r
http://slil.ru/28450621 - source

http://slil.ru/28450626 - клиент

файл не найден перезалейте плиз!!!!!!!!!!!!!!!!!!!!!!!!!!!

Eff0rd 03.03.2010 15:52

тоже когда то писал.. правда не свой клиент, а скрипты к mIRC. А пользуюсь всю жизнь голым мирцом)

BastardFromHell 03.03.2010 21:24

Цитата:

Сообщение от geezer.code
зато свой.

нарисованные формы в делфи и компонент? прям ваще какой "свой"

AlexTheC0d3r 03.03.2010 22:43

Цитата:

Сообщение от BastardFromHell
нарисованные формы в делфи и компонент? прям ваще какой "свой"


это была моя первая более-менее серьезная программа...

mr. ZetRikS 04.03.2010 06:18

По мне так норм... )
 
Цитата:

Сообщение от BastardFromHell
нарисованные формы в делфи и компонент? прям ваще какой "свой"

В полне не плохо, разон только начинал... )

Или ты предлагаешь велосипед переписать? :)

Автор, мути апдейт с новым дизайном :)
Больше года прошло с релиза...

P.S. Ссылки дохлые...

shell_c0de 04.03.2010 07:42

Перезалей сорцы ...

MaTpOc 06.03.2010 00:05

ну так что никто не перезальет??? :mad:

AlexTheC0d3r 06.03.2010 08:26

я перезалью
щаас...

http://slil.ru/28751063
http://alexthec0d3r.3rss.ru/downloads/airc_s.zip - сорц

http://slil.ru/28751064
http://alexthec0d3r.3rss.ru/downloads/airc.zip - exe

Jingo Bo 06.03.2010 16:21

shell_c0de
TidIRC

sn0w 07.03.2010 04:14

хехе, вспомнилась дллка, давно давно писаная - чтоб вывод в ирке был разноцветный =)

Код:

/*
*  XmasIRC patch for mIRC, ver 1.00
*  Copyright (c) 2004-2005, The BOXP Developers Team. All Rights Reserved.
*
*  Author: BD, sn0w at pc-r00m dot net 
*/

#include <winsock2.h>
#include <stdio.h>
#include "resource.h"

#define _MSG(s)        MessageBox(NULL, s, "debugFX", MB_OK|MB_ICONWARNING)
#define getrandom( min, max ) (( rand() % (int)((( max ) + 1 ) - ( min ))) + ( min ))

#define XMASIRC_MUTEX        "XMASIRC_MUTEX"


////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
void                        PatchMainWindow(HANDLE hMod);
void                        InterceptFunctions(void);
int        WSAAPI                Intercept_send(SOCKET s, const char FAR * buf, int len, int flags);

HANDLE hMutex;

#pragma pack(1)  //sn0w: 1 byte member structure alignment (got crash otherwise) =))
struct jmp_far
{
  BYTE instr_push;                //здесь будет код инструкции push
  DWORD arg;                        //аргумент push
  BYTE  instr_ret;                //здесь будет код инструкции ret
};
#pragma pack()


BYTE old[6];                        //область для хранения 6-ти затираемых байт начала функции
DWORD adr_send;                        //будущий адрес оригинальной функции
DWORD written;                        //вспомогательная переменная
jmp_far jump;                        //здесь будет машинный код инструкции перехода


////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
BOOL APIENTRY DllMain( HANDLE hModule,  DWORD  ul_reason_for_call,
                      LPVOID lpReserved )
{
        // Если система подключает DLL к какому-либо процессу,
        // она сначала вызовет главную функцию DLL с параметром
        // DLL_PROCESS_ATTACH, на что мы сразу вызовем нашу функцию
        // InterceptFunctions, которая произведет подмену стандартной API функции
       

        if(ul_reason_for_call == DLL_PROCESS_ATTACH){
                                       
                        hMutex = CreateMutex(NULL, TRUE, XMASIRC_MUTEX);

                        if(hMutex != (HANDLE)ERROR_ALREADY_EXISTS){
                                InterceptFunctions();
                                PatchMainWindow(hModule);
                        }


        }else if(ul_reason_for_call == DLL_PROCESS_DETACH){
                        ReleaseMutex(hMutex);
        }
 
  return TRUE;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
void InterceptFunctions(void)
{
 
 
  //сначала получим абсолютный адрес функции для перехвата
  adr_send = (DWORD)GetProcAddress(GetModuleHandle("ws2_32.dll"),
                    "send");
 
  if(adr_send == 0){
    _MSG("Cant get adr_send");
    return;
  }

  // Зададим машинный код инструкции перехода, который затем впишем
  // в начало полученного адреса:

  // sn0w: (disassembly)
  //
  //        push addr Intercept_send; ( push address to stack)
  //        ret ( pop eip from stack (fake call) )
  //
  // than i'll write this opcodes at the begin of send() in ws2_32 image in
  // memory space.

  jump.instr_push = 0x68;
  jump.arg = (DWORD)&Intercept_send;
  jump.instr_ret = 0xC3;

  //Прочитаем и сохраним первые оригинальные 6 байт стандартной API функции
  ReadProcessMemory(GetCurrentProcess(),(void*)adr_send,
                    (void*)&old, 6, &written);

 

  //Запишем команду перехода на нашу функцию поверх этих 6-ти байт
  WriteProcessMemory(GetCurrentProcess(), (void*)adr_send,
    (void*)&jump, sizeof(jmp_far), &written);
 
}



////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
void XmasBuild(char *sDest, char *sSource)
{
               
        char*        s_prefix = "PRIVMSG #antichat :";
        char        sTo[9000];
        int                ncnt = 0;
       
        while(*sSource){

                if(getrandom(1,10)>=5){
       
                        sTo[ncnt++] = 0x03; //add color
                        sprintf(&sTo[ncnt++], "%.2d", getrandom(1,14));  // foreground
                        ncnt++;

                //        sprintf(&sTo[ncnt++], ",%d", getrandom(1,14)); // background
                        sTo[ncnt++] = *sSource;
                }else{
                        sTo[ncnt++] = 0x02; //add bold
                        sTo[ncnt++] = *sSource;
                }
                               
                sSource++;
        }

        sTo[ncnt] = 0;

        strcpy(sDest, s_prefix);
        strcat(sDest, sTo);

}



////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

int        WSAAPI        Intercept_send(SOCKET s, const char FAR * buf, int len, int flags)
{
  //Сначала восстанавливаем 6 первых байт функции. Это не обязательное
  // действие, просто мы решили подшутить над пользователем, и все
  // сообщения функции MessageBoxA переделать на свои, поэтому нам придется
  // вызвать оригинальную функцию, а для этого следует восстановить ее адрес:
       
        int rc;
        char*        s_prefix = "PRIVMSG #antichat :";
       
        WriteProcessMemory(GetCurrentProcess(), (void*)adr_send,
                    (void*)&old, 6, &written);

        //edit buffer...
        char editedbuf[9000];

        if(strncmp(buf, s_prefix, strlen(s_prefix))==0){
                XmasBuild(editedbuf, (char*)(buf+strlen(s_prefix)));
                rc = ((int (WSAAPI*)(SOCKET, const char FAR *, int, int))adr_send)(s,editedbuf,strlen(editedbuf),flags);
                //rc = ((int (WSAAPI*)(SOCKET, const char FAR *, int, int))adr_send)(s,buf,len,flags);
               
        }else{
                rc = ((int (WSAAPI*)(SOCKET, const char FAR *, int, int))adr_send)(s,buf,len,flags);
        }

        //Снова заменяем  6 байт функции на команду перехода на нашу функцию
        WriteProcessMemory(GetCurrentProcess(), (void*)adr_send,
                    (void*)&jump, 6,&written);


        //_MSG("WSAStartup()");
        return rc;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
void PatchMainWindow(HANDLE hMod)
{

        HWND hWnd;
        char s_buff[256];
        char s_total[512];

        hWnd = FindWindow("mIRC", NULL);

        if(!hWnd) // failed
                return;

        GetWindowText(hWnd, s_buff, 255);

        strcpy(s_total, s_buff);
        strcat(s_total, " - xmasirc v 1.0 is in runtime now");

        SetWindowText(hWnd, s_total);

        HICON hIcon;

        hIcon = LoadIcon((HINSTANCE)hMod, MAKEINTRESOURCE(IDI_MIRCICON));

        if(!hIcon)
                _MSG("Cant load icon");

        SendMessage(hWnd, WM_SETICON, ICON_SMALL,
                (LPARAM)hIcon);

        UpdateWindow(hWnd);

       
}


MaTpOc 19.03.2010 20:54

Цитата:

Сообщение от AlexTheC0d3r
я перезалью
щаас...

http://slil.ru/28751063
http://alexthec0d3r.3rss.ru/downloads/airc_s.zip - сорц

http://slil.ru/28751064
http://alexthec0d3r.3rss.ru/downloads/airc.zip - exe

не работает!
пишу ник и пас и виснет намертво (((
раньше такого не было (!

AlexTheC0d3r 20.03.2010 10:34

Цитата:

Сообщение от MaTpOc
не работает!
пишу ник и пас и виснет намертво (((
раньше такого не было (!

дело, как мне кажется в том, что клиент коннектится по ip, который сменился у ирс ачата

yaneblinchik 20.03.2010 11:17

что за ошибка socket error #10060 ?

AlexTheC0d3r 20.03.2010 16:21

Цитата:

Сообщение от yaneblinchik
что за ошибка socket error #10060 ?

смотри выше

MaTpOc 24.03.2010 12:24

Цитата:

Сообщение от AlexTheC0d3r
дело, как мне кажется в том, что клиент коннектится по ip, который сменился у ирс ачата

И где узнать на кокой он изменился???

yaneblinchik 24.03.2010 16:40

AlexTheC0d3r ждем обновления...скучно))


Время: 14:29