Просмотр полной версии : Ищю исходники Торгового бота
Собственна, ищю исходники любого простого торгового бота на Дельфи с минимальным функционалом, логин, выставить вещи на трейд, сесть на трейд / встать с трейда. Гугл непомогает. Встречал исходник TradeBot, но сцылки мертвые. Помогите кто может. :)
Был бы признателен Hint'у, если бы дал исходники своего бота с вырезанными кусками работы с защитой.
Либо интересуют реализованные алгоритмы работы перехода с ЛС на ГС и поддержка обмена пакетами NetPing Бота с ГС.
alexteam
11.12.2009, 13:01
куски с моего. не совсем торгового.. то что предназначено для паблика. на данный момент для цт2.3
скрипт работы с протоколом гс, первые пакеты:
procedure CallProtocolVersion(Protocolversion:Integer);
begin
buf := '';
WriteMask('bd',[$0E, Protocolversion]);
buf := buf +
HStr('0907545603090B010702545456070002555600510053 57040755085401070153005655560106050451030851085156 045406550802095156015306550453005656'+
'5301090209015154510955560903040705550406550406090 45101080806055206040107540306525506555551010204540 3555401575155055205540751515507'+
'0253530052055207015400030505080605050603000D08010 709035103075309510607540A5056025204055551025300085 4045256060209000803535601050055'+
'060856040D0607520607040A0601045404000502045400095 253050401040505015251520D065108095453000D010203545 30105030856540702540B06115D1F60');
SendBuf;
end;
Procedure CallAuthLogin(LoginName:string; SessionKey1_1, SessionKey1_2, SessionKey2_1, SessionKey2_2: Integer);
begin
buf := '';
WriteMask('bsdddd', [$2b, LoginName, SessionKey2_2, SessionKey2_1, SessionKey1_1, SessionKey1_2]);
buf := buf + HStr('010000002A02000000000000');
SendBuf;
end;
кусок кода не совсем из паблика подключающий дллку
function TUserEngine.LoadLsLib(unload: boolean): boolean;
begin
result := false;
if HLsWorkOut <> 0 then
begin
if assigned(LsWorkout) then
begin
LsWorkout.Destroy;
LsWorkout := nil;
end;
FreeLibrary(HLsWorkOut);
HLsWorkOut := 0;
LsWorkoutCreate := nil;
end;
if (TLsClass(UserClass.CurrentLS).LSlibraryPath = '') or unload then exit;
if FileExists(TLsClass(UserClass.CurrentLS).Lslibrary Path) then
HLsWorkOut := LoadLibrary(PChar(TLsClass(UserClass.CurrentLS).Ls libraryPath))
else
HLsWorkOut := LoadLibrary(PChar(apppath+'\DATA\WorkOuts\LS\'+TLs Class(UserClass.CurrentLS).LslibraryPath));
if HLsWorkOut > 0 then
begin
try
@LsWorkoutCreate := GetProcAddress(HLsWorkOut,'LSWorkoutCreate');
result := true;
except
end;
if (@LsWorkoutCreate = nil) or not result then
begin
AddLogMain(format(rs_lib_hasNoExport, [TLsClass(UserClass.CurrentLS).LSlibraryPath, 'LSWorkoutCreate']),2)
end
else
begin
AddLogMain(format(rs_lib_load_ok, [TLsClass(UserClass.CurrentLS).LSlibraryPath]),0);
try
LsWorkoutCreate(@LSworkout);
if @LSworkout = nil then else Result := true;
except
result := false;
end;
if not result then AddLogMain(format(rs_lib_object_create_fail, [TLsClass(UserClass.CurrentLS).LSlibraryPath]),2);
end;
end
else
begin
Result := false;
AddLogMain(format(rs_lib_loadfail, [TLsClass(UserClass.CurrentLS).LSlibraryPath]),2);
end;
end;
модуль работы с ЛС в полном виде в аттаче. представляет собой дллку с классом похожим на компоненту (код "сперт" с l2clientemu). uLSAuthSharedData.pas подключаеться и к длл и к приложению ее подгружающую и содержит нужные структуры с коментариями позволяющими понять порядок вызова методов и что означает тот либо иной проперти.
alexteam
11.12.2009, 13:17
зы. на цт2.3 нетпинга нет
зы. на цт2.3 нетпинга нет
С нетпингом я разобрался, с ответом ГГ тоже, а вот авторизация для меня пока темный лес. :(
Может быть есть у кого наработки для авторизации на C4 с621 протокол?
с ответом ГГ тожеоО, как это разобрался?, не поверю что ты понял как отвечать ГГ так же как оригинальный ГГ!
оО, как это разобрался?, не поверю что ты понял как отвечать ГГ так же как оригинальный ГГ!
Дело в том что на интересующем меня сервере ГГ убит, но освобожденный ответ на гг используется для каких то целей, и генерируется не в engine, или как наверное в оригинальном клиенте в GameGuard.des, а в dll защиты, в итоге контрол Ц, контрол Вэ, в свою функцию в скобочках asm решило проблему.
ЗЫ: Уже неделю сижу в отладчике, не могу понять в чем дело. l2emu_client не хочет жевать пакеты логин сервера. Клиент в отладчике нормально логиниться, есть изменения обработки пакетов от ЛС в клиенте, повторение этих изменений в l2emu_client не приводит к результату, возникает догадка что l2emu_client не очень корректно работает с С4. М.б. кто нибудь достанет из загашнеков исходник для логинсервера С4.?
Xkor, а у тебя случаем не осталось исходника L2proxy?
Xkor, а у тебя случаем не осталось исходника L2proxy?L2proxy это предок пакетхака, так что хз зачем оно тебе)
Хочу попробовать на локалхост завести l2emul и клиента, и засылать одинаковые пакеты в тот и другой, и проанализировать работу.
xkor, удали тему. С логин сервером разобрался. Пришлось вспомнить как писать серверные сокеты. Сделал эмулятор логин сервера и проигрывал в нем записанные заранее пакеты. Анализировал работу клиента и эмулятора. Результат положительный. Могу исходник эмулятора лс выложить если кому интересно. Заранее говорю что у меня древний протокол авторизации 785a.
собственно вот. Лог серверных пакетов береться из l2_emul и вставляется в исходный код. Писал чисто для себя и под конткретную задачу, по этому гнилыми памидорами просьба не закидывать )
alexteam, я так понял ты своего бота пишешь. Вопрос, как у тебя реализована работа с ГС. Именно блокируемый/неблокируемый сокет, обработка событий в отдельном потоке или нет. Интересуют хотя бы примерные исходники реализации неблокируемого сокета с обработкой событий сокета в потоке. Весь ГуглоЯндекс перелопатил, готовых решений нету :(
alexteam
29.12.2009, 13:00
для каждого соединения в отдельном потоке. блокируемый режим.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot