PDA

Просмотр полной версии : Открываем пароли спрятанные под звездочками


witcherD
28.06.2010, 01:40
Лирическое отступление (можно пропустить, к делу это не относится). Не так давно играл я в игру под названием Perfect World. И все было бы ничего, но как-то раз мой аккаунт забанили из-за какой-то ерунды. Конечно можно было обратиться в техподдержку, но я понимал, что игра стала занимать все больше времени и пора уже было с ней завязывать. Но в душе осталась обида, и я решил хоть как-то подпортить их администрации жизнь. Тогда после долгих поисков я наткнулся на пост от господина Void(вроде так), в котором он говорил о простоте связи с сервером и ниже написал примерный код. В то время я плохо понимал о чем он говорил, но как человек любопытный я скопировал этот код себе и скомпилировал его, и, о чудо, он оказался рабочим. После нескольких тестов до меня дошло, что это код подключения. Где одно подключение - там и несколько, а это уже почти брут =), который впоследствии я и решил сделать. Занялись мы этим одновременно с господином TBX1n, сначала просто двойным циклом(с отправкой аккаунтов мне, может некоторые помнят, забавно вышло), потом с потоками, а затем и с формами. Но поддерживать его, обновлять, общаться с десятками людей, которым лень прочитать полностью первый пост, не говоря уж об остальных, мне доставляло мало удовольствия и я отказался от этой идеи(и как показала история с прибылью все того же г-на TBX1n, зря я это сделал=) ). Как ни странно, но брут начал убивать почти всю мозговую деятельность на форуме, все начало сводиться к отмыванию аккаунтов, причем люди взламывающие их почувствовали себя неимоверно крутыми, самыми умными, с единственно верным мнением. И как мне показалось, раздел Perfect World на данный момент плоностью себя исчерпал.

Поэтому я начал переходить в другие разделы. А так как по C# тем нет(жаль, хотя наверное люди которые этим занимаются профессионально, общаются на специализированных форумах, далеких от этого, но все таки буду рад если такие темы еще кого-нибудь заинтересуют), то я попал сюда. До этого я немного занимался delphi, и у меня осталось немного заготовок, которые могут показаться кому-нибудь интересными(а если так, то смогу выложить и другие примеры). И вообще было бы неплохо привлечь в этот раздел новых людей и расшевелить его.

Итак, ближе к делу. Почти все что я делал было взято либо из королевства делфи, либо из Фленова. Полностью раскрывать тему, рассказывать теорию и внедряться в подробности я не собираюсь(честно сказать, что означают те или иные функции, я уже не помню(а может и никогда не знал =) ), но немного комментариев разумеется оставлю.

Показываться пароль будет при нажатии клавиши Ctrl и клика мышью на пароль. Вся логика будет в dll! В основной части программы лишь установка ловушки и ее завершение, то есть собственно команда к началу отображению звездочек. Это делается с помощью вызова метода RunStopHook(true/false) который будет прописан позже в библиотеке. Объявление метода выглядит так procedure RunStopHook(State : Boolean) stdcall; external 'hackpass.dll' index 1;, где hackpass.dll - название библиотеки, индекс 1 - индекс метода.

Переходим в dll.

library hackpass;

uses Windows, Messages;
var
SysHook : HHook = 0;
Wnd : Hwnd = 0;

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
begin

//отправляем перехваченное сообщение дальше в систему
CallNextHookEx(SysHook, Code, wParam, lParam);

if code = HC_ACTION then
begin
//находим идентификатор окна сгенерировавшего сообщение
Wnd := TMsg(Pointer(lParam)^).hwnd;

//Проверяю тип сообщения.

//если была нажата левая кнопка мыши
if TMsg(Pointer(lParam)^).message = WM_LBUTTONDOWN then
//и нажата клавиша ctrl
if ((TMsg(Pointer(lParam)^).wParam and MK_CONTROL) = MK_CONTROL) then
begin
// убраем в окне отправившем сообщение звёздочки
SendMessage(Wnd, em_setpasswordchar, 0, 0);
//перерисовываем окно.
InvalidateRect(Wnd, nil, true);
end;
end;
end;

//тут и так понятно из названия =)
procedure RunStopHook(State : Boolean) export; stdcall;
begin
if State=true then
begin
//Запускаем ловушку.
SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, Instance, 0);
end
else
begin
//Отключить ловушку.
UnhookWindowsHookEx(SysHook);
SysHook := 0;
end;
end;

Вот вроде и все. Надеюсь на оживление раздела =)

inko.mice
09.09.2010, 21:00
На самом деле очень интересно но ничего непонятно:noemotion:
Не мог бы ты пополнее прокомментировать про ловушку и про то что такое State?

-Rikk-
09.09.2010, 21:17
Программа просто заново отрисовывает окно, но вместо отображения звёздочек вставляет нормальное отображение букв и цифр (если нажата левая кнопка мыши и ctrl).

Mopnex
25.09.2010, 13:16
До этого я немного занимался delphi, и у меня осталось немного заготовок, которые могут показаться кому-нибудь интересными(а если так, то смогу выложить и другие примеры). И вообще было бы неплохо привлечь в этот раздел новых людей и расшевелить его.
+100500 раздел надо шевелить, а по теме у мну вопрос, есть ли чтонибудь по многопоточности, бруты на дельфи например, просто пишу свой брут на дельфе и при создании некоторого количества потоков выбивает ошибку, очень нехорошую ошибку, что-то типо отказа доступа, хотя с глобальными переменными работаю через критические секции и ваще не понимаю изза чего эта ошибка, пробывал на инди 10, но тама чтото не клеится при приеме, разрывается соединение,поэтому работаю с винсоком, различные исходники которые валяются в интернете у мну тож нерабочие, если есть поделитесь плиз.

Dinmaite
25.09.2010, 19:27
+100500 раздел надо шевелить, а по теме у мну вопрос, есть ли чтонибудь по многопоточности, бруты на дельфи например, просто пишу свой брут на дельфе и при создании некоторого количества потоков выбивает ошибку, очень нехорошую ошибку, что-то типо отказа доступа, хотя с глобальными переменными работаю через критические секции и ваще не понимаю изза чего эта ошибка, пробывал на инди 10, но тама чтото не клеится при приеме, разрывается соединение,поэтому работаю с винсоком, различные исходники которые валяются в интернете у мну тож нерабочие, если есть поделитесь плиз.

А ты не забываешь после использования сокета закрыть его?

Mopnex
25.09.2010, 23:50
Сокеты закрываю, поток уничтожаю, а ошибка все равно вылазит :(
ЗЫ. Щас 7ую дельфу скачал, на ней попробую щас сделать... для начала через инди, если норм будет переделаю на сокеты

Во,норм. На 7ой дельфе норм всё через сокеты получилось, работает более менее стабильно ,брут для Runes of Magic готов ! (пока безпроксевый) :)