Просмотр полной версии : 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
поставил плюсик, ждем фтп клиент для онтечатовцев с использованием компонента куйтам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
можно взять с скомпилированной версии
хотя если посмотреть исходник можно сообразить что в этом файле должно быть :)
Клиент 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?
он этого не знает! не плохо замутил:)
ТС, понравился твой irc Клиент. Сделай возможность конектиться к другим серверам.
Уже давно юзаю, все ок, багов не нашел, т к сижу на ирке ачата по мне все отлично вышло.
кстати, http://slil.ru/26998410 уже не жива.
AlexTheC0d3r
03.04.2009, 19:33
всегда есть вариант от kyzmi4 (файлообменник)
Если у кого ещё где то есть этот клиент на компе, залейте куда нибудь.
Когда то давно юзал его, хочу вернуть. :(
ЗЫ
Простите за археологию.
AlexTheC0d3r
08.01.2010, 01:48
счас залью
AlexTheC0d3r
08.01.2010, 01:54
http://slil.ru/28450621 - source
http://slil.ru/28450626 - клиент
http://slil.ru/28450621 - source
http://slil.ru/28450626 - клиент
файл не найден перезалейте плиз!!!!!!!!!!!!!!!!!!!!!!!!!!!
тоже когда то писал.. правда не свой клиент, а скрипты к 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
Перезалей сорцы ...
ну так что никто не перезальет??? :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
хехе, вспомнилась дллка, давно давно писаная - чтоб вывод в ирке был разноцветный =)
/*
* 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);
}
я перезалью
щаас...
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 ?
смотри выше
дело, как мне кажется в том, что клиент коннектится по ip, который сменился у ирс ачата
И где узнать на кокой он изменился???
yaneblinchik
24.03.2010, 16:40
AlexTheC0d3r ждем обновления...скучно))
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot