PDA

Просмотр полной версии : Airc - Antichat IRC client (c) AlexTheC0d3r


AlexTheC0d3r
25.02.2009, 22:53
ПОКА НЕАКТУАЛЬНО, ВСЕ ДРУЖНЕНЬКО ЖДЕМ ОБНОВЛЕНИЯ

Думаю в халяве этому не место. Клиент имеет уже более-менее завершенный вид, завтра выложу 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 (http://radikal.ru/F/s43.radikal.ru/i101/0902/61/bff9f9d789fa.png.html)
Чем не античат клиент)? Очень даже удобный. А у ТС, не в обиду, неюзабельный.

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
что тебе мешает скопировать 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
http://slil.ru/28450621 - source

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

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

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

BastardFromHell
03.03.2010, 21:24
зато свой.
нарисованные формы в делфи и компонент? прям ваще какой "свой"

AlexTheC0d3r
03.03.2010, 22:43
нарисованные формы в делфи и компонент? прям ваще какой "свой"


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

mr. ZetRikS
04.03.2010, 06:18
нарисованные формы в делфи и компонент? прям ваще какой "свой"

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

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

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

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_s end,
(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
я перезалью
щаас...

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
не работает!
пишу ник и пас и виснет намертво (((
раньше такого не было (!
дело, как мне кажется в том, что клиент коннектится по ip, который сменился у ирс ачата

yaneblinchik
20.03.2010, 11:17
что за ошибка socket error #10060 ?

AlexTheC0d3r
20.03.2010, 16:21
что за ошибка socket error #10060 ?
смотри выше

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

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

yaneblinchik
24.03.2010, 16:40
AlexTheC0d3r ждем обновления...скучно))