Yoko

All sides of Injection
It is currently 2024-04-18 11:49:08

All times are UTC+02:00




Post new topic  Reply to topic  [ 226 posts ]  Go to page 1 2 3 4 512 Next
Author Message
 Post subject: Injection 2012
PostPosted: 2009-01-07 15:14:27 
Offline
Site Admin
User avatar

Joined: 2004-04-03 16:49:38
Posts: 1964
[table2start]There is a chance I would make some changes in Injection to update it.
For many years i didn't played UO, so I need some fresh technical information and list of most troublesome problems you encounered using Injection last years.

Whoever could send me updated technical information (like new packets references, new features reviews) it could be very handsome.

If you UO player who'd like to help, just reply in this topic what changes in Injection would you like to see.
[table2middle]
Есть шанс что я сделаю некоторые изменения в инжекте чтобы обновить его. Я уже много лет не играю в Ультиму, так что мне нужна свежая техническая информация и список найболее проблемных мест которые вы заметили используя инжект последние годы.

Если кто может выслать мне обновлённую техническую информацию (типа справочника по новым пакетам, описания новых фич), это было бы весьма полезно.

Если вы ультимщик желающий помочь, просто отпишитесь в этом топике какие изменения в инжекте вам бы хотелось увидеть.
[table2finish]


Top
   
 Post subject:
PostPosted: 2009-01-07 15:53:19 
Offline
User avatar

Joined: 2008-10-29 17:27:20
Posts: 75
Очень хотелось бы чтобы исправили фичу с нагрузкой на ЦП, надоело уже, у меня проц 3,5 ггц 2 ядерный а нагрузка 70%, это не дело, из-за этого часто баги лезут в инже((

А второе, часто крашит =(


Top
   
 Post subject:
PostPosted: 2009-01-07 16:05:48 
Offline
Site Admin
User avatar

Joined: 2004-04-03 16:49:38
Posts: 1964
насколько я помню клиент ультимы написан так, что жрёт полностью одно ядро, поэтому я неуверен что это вызвано именно инжектом. сверь нагрузку с и без инжекта.

жалобы на креши на многоядерных машинах мне поступали, но в те времена когда я дорабатывал инжект многоядерных машин у людей практически небыло (в том числе и у меня).


Top
   
 Post subject:
PostPosted: 2009-01-07 16:26:11 
Offline
User avatar

Joined: 2008-10-29 17:27:20
Posts: 75
сверил, на разоре у меня нагрузка 20% не более, на инжекте зашкаливает под 80%


Top
   
 Post subject:
PostPosted: 2009-01-07 16:47:05 
Offline
User avatar

Joined: 2008-10-29 17:27:20
Posts: 75
мнебылобы пофиг на загрузку эту, еслибы не то, что когда мясное пвп начинается, загрузка повышается на 100% и нчинает жутко лагать, пока не перезайдешь, а это в пвп плохо=(


Top
   
 Post subject:
PostPosted: 2009-01-07 17:08:33 
Offline
User avatar

Joined: 2008-09-12 05:07:34
Posts: 247
Пока три весчи придумал:

1 Возможность из скрипта включать и отключать галки во вкладке Main(в частности TWI)
2 Возможность из скрипта не только добавлять обьекты во вкладке Objects, но и удалять их оттуда, например команда uo.delobject
3 Добавить команду поиск тайла по типу, наподобие uo.findtype сделать uo.findtile, для мининга, рыбалки и особенно лесоруба будет ваще тема

П.С. Вот ещё придумал, чтобы при логауте инжа не затирала старый Injection.xml а вносила в него изменения, а то когда несколько окон открыто и потом логаутом их закрываешь, в итоге остаётся Injection.xml последнего закрытого окна, а обьекты и хоткеи остальных окон идут гулять :lol: , я то разобрался и ковыряю Injection.xml в блокноте, а кто незнает, парятся :D


Top
   
 Post subject:
PostPosted: 2009-01-07 17:33:16 
Offline

Joined: 2008-12-13 00:00:15
Posts: 174
Millerbeer wrote:
1 Возможность из скрипта включать и отключать галки во вкладке Main(в частности TWI)


+1 ы)
я знаю что в АСМе есть такая фича,хотелось бы что б при этом не выскакивало окно инжи поверх клиента ))


Top
   
 Post subject:
PostPosted: 2009-01-07 19:54:03 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Injection::m_message_types фиксировать до 256, а то опять появятся новые пакеты:) а места не будет:)

Изменились пакеты с приходом КР в некоторых пакетах добавлен 1 байт (номер слота в контейнере), актуально только для 3Д клиента.

Подключение к логин серверу тоже немного изменилось. если надо могу поробно расписать.

Добавить подержку MD5 и Zlib, первое для новых клиентов сейчас во всю на фришардах с РанУО используется. Второе для пакетов со сжатым контентом.

Добавить возможность работать инжекту с тремя ЛогинКриптКлючами (хотя это единственная панацея от инжекта).

Развить консольный ввод текста в клиенте, перейти к стандартной схеме ввода сообщений (по нажатию на Ентер активируется консоль для ввода текста, по повторному нажатию текст отправляется и консоль переходит в неактивный режим). Это позволяет задействовать для макросов всю клавиатуру при этом, это не будет приводить к набору текста.

Расширить скриптовые возможности: ожидания нескольких гампов подряд, несколько таргетов и тд (очереди).

Развить идею ходилки. Каждый шаг подтверждается сервером, было бы интересно поставить это на контроль.

В новых клиентах появились бафы.


Top
   
 Post subject:
PostPosted: 2009-01-07 20:32:07 
Offline
Site Admin
User avatar

Joined: 2004-04-03 16:49:38
Posts: 1964
обзор интересный но конечно нужны подробности.

по вышеперечисленному сходу замечания такие: что такое "КР" понятия не имею, "перейти к стандартной схеме ввода сообщений" - это жалоба не ко мне а в Origin, ходилка как раз и ставит всё на контроль в результате глючит ходьба на многих шардах.

всё остальное, если можно подробнее, потому что по намёкам мне абсолютно непонятно например какое отношение имеет хеширование к фришардам.


Top
   
 Post subject:
PostPosted: 2009-01-07 21:08:44 
Offline
User avatar

Joined: 2006-05-12 08:03:45
Posts: 223
Иногда замечал, что проверка скилла не работает, то есть в окне ультимы появляется сообщение что данный скилл вырос на 0.1, а в инжекте на вкладке Skills никаких изменений, но если нажать кнопочку "Req" то скилл обновляется до текущего значения, может реализовать это нажатие из скрипта типа uo.req()? Так, на всякий случай. 8)
Ещё такая мысль, расширить возможность uo.press(num_key, num) num это номер, 0-ноль это ничего, 1- Ctrl, 2-alt, 3-shift, 4-ctrl+alt, 5-ctrl+shift, 6-alt+shift, 7-ctrl+alt+shift. Для чего, ну хотя бы для ходилки-бегалки если с ctrl - то бегает, если без ctrl - не бегает. :)

P.S. КР - KR - Kingdom Reburn (вроде так) Ultima с обновлённой графикой и интерфейсом. Сделан косметический и не только ремонт к юбилею, а именно к 10-тилетию Ultim-ы. Вроде так, может ошибаюсь.

_________________
Играю на drw.ru
Использую инжект 505.18 VeNd0r
Начинающий скриптер.


Top
   
 Post subject:
PostPosted: 2009-01-07 21:22:15 
Offline

Joined: 2009-01-07 20:51:39
Posts: 5
Может не много не в тему, но чтобы не создавать новую, напишу:

Client 6.0.12.3.

Строка ilpatcha:
"ML 6.0.12" e76bd4dd 0021f000 : 0041FBC9 = EB, 0041FCA7 = EB, 0041FD12 = EB

так же пробовал

"ML 6.0.12" e76bd4dd 0021f000 : 0041C779 = EB, 0041C717 = EB, 0041C639 = EB

К сожалению не то не то не подходит. Шард использует оригинальные клиенты, без всякого шифрования, поэтому UOKeys даже не меняю.

С версии 6.0.7.0 по 6.0.11.0 я просто менял ключ клиента, и строку (0041FBC9 = EB.....) вставлял одну и ту же, но тут это не проканывает. Поделитесь пожалуйста нужной строчкой.

Спасибо.

Да, в инжу входит, но зависает на Verifying Account.


Top
   
 Post subject:
PostPosted: 2009-01-07 21:53:24 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Хотелось бы что то на подобие клиентского targetnext, если возможно, то программный реконнектор... что то еще хотел... забыл... вспомню допишу сюда же, ну и конечно же стабильности в работе :)


Top
   
 Post subject:
PostPosted: 2009-01-07 22:25:57 
Offline

Joined: 2008-12-25 22:35:48
Posts: 10
Dear yoko, i begun playing uo in 1999. I've been using inj since you started it and i was really happy of your announcement!

I posted few days ago a message regarding the new gump protocol, this would be a nice feature to implement (http://forum.yoko.com.ua/viewtopic.php?t=14232)

As a computer engineer, i'm an expert c++ programmer so I'd love to help you and develop new features using the source code.

I'd love to use Python to script and develop new powerful macros, i'd love to extend the features with some sort of plugin system. Python would be an advanced parser, with plenty of built in functions (math, string, I/o, database access, ecc...)

Would be also nice to have some sort of dump of the client-server communications to be able to post it to the developers.

Another inj-like program, Razor, has some interesting features i'd like to see inj.. Finally, Easy uo can obtain the further properties of an object, it would be nice to be able to obtain them...

I'd love to help you in every way i can, i'm an entusiastic Inj user and Uo player

Thank you[/url]


Top
   
 Post subject:
PostPosted: 2009-01-07 22:52:23 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Красиво говорит, интурист :lol:.


Top
   
 Post subject:
PostPosted: 2009-01-07 23:14:27 
Offline
User avatar

Joined: 2006-05-12 08:03:45
Posts: 223
О! Интурист!.
Я по английски не шарю, но он... (копьютерный инженер, да ещё и експерт с++, с радостью поможет Yoko в новом проекте были бы сорцы. К тому же обожает Питон(яз. прогр.) и скриптит на нём и макросит, и плагинит. А парсер на нём просто ух. Были бы сорцы. А из других инжектоподобных программ - Разор как что-то интересное прям как инжект... финальный.)
В общем что хочет этот энтузиаст и игрок(со стажем, ведь с 1999 начал играть и юзать инжект)? И за что спасибо? Я не понял. Переведите пожалуйста!
Я честно английского не знаю. Кто знает английский подтвердит. :D

_________________
Играю на drw.ru

Использую инжект 505.18 VeNd0r

Начинающий скриптер.


Top
   
 Post subject:
PostPosted: 2009-01-08 02:41:49 
Offline
User avatar

Joined: 2005-09-30 22:42:05
Posts: 67
Сейчас уже больше как полгода не играю, да и вообще ни разу не играл на сервере ОСИ стайл, так что о новых фичах мало что знаю.
1) Понятное дело, нужна поддержка новых клиентов. 6 версии поддержку доделать(не знаю, есть ли какие проблемы, но по постам похоже, что есть), а еще лучше сделать поддержку и КР(новая версия уо клиента, уже писали выше). Относительно скоро выйдет клиент еще новее - Stygian Abyss, ходят слухи, что под нее будет классический клиент и КР типа...
2) Лично от себя скажу, что единственное, что дико раздражало в инжекте, когда играл и мешало использовать его, как единственную прогу к уо - его скриптовой модуль. Ну это же смех просто какой-то...
В любой момент может вылететь дурацкая ошибка с парсером, вызванная хз чем. Это убивает инжект, как прогу для добычи ресурсов, а иногда и в пвп из-за этого упасть можно. Отсутствие команды move тоже не радовало, но без починки вышеописанной ошибки от нее мало толку будет...

_________________
UORPG.net: Удачной игры!


Last edited by wap on 2009-01-08 17:22:21, edited 2 times in total.

Top
   
 Post subject:
PostPosted: 2009-01-08 05:09:49 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Yoko wrote:
обзор интересный но конечно нужны подробности.

по вышеперечисленному сходу замечания такие: что такое "КР" понятия не имею, "перейти к стандартной схеме ввода сообщений" - это жалоба не ко мне а в Origin, ходилка как раз и ставит всё на контроль в результате глючит ходьба на многих шардах.

всё остальное, если можно подробнее, потому что по намёкам мне абсолютно непонятно например какое отношение имеет хеширование к фришардам.


начиная с 6.0.5 версии клиента
Первичное подключение к ЛогинСерверу:
буфер = 0xEF
send(sock, буфер, ...)
Буфер = ИП (4 байта)
send(sock, буфер, ...)
Буфер = Версия (16 байт)
send(sock, буфер, ...)

Теперь подробней о "Версия"
теперь версия клиента строится так: А.Б.В.Г (как правило Г в обписании опускается, но возможно в будущем будет играть роль)
Формат BigEndian
Пример: 6.0.5.0
00 00 00 06 | 00 00 00 00 | 00 00 00 05 | 00 00 00 00
A Б В Г
Общий вид первой посылки до ответа сервера:

EF || 00 00 00 00 || 00 00 00 06 | 00 00 00 00 | 00 00 00 05 | 00 00 00 00
IP Версия

Правило формирования ИП не изменилось.

Следующие соединение с Логин сервером проходит по старым правилам. Версия нужна серверу для выробатки ЛогинКлючей (почти на всех РанУО шардах реализовано).

Проблема с инжектом была втом что инжект вешает хук на send. Тогда приходилось мудрить с SocketHook::send.
Так как первый раз он должен пропустить мимо 3 вызова, но приэтом скопировать ключ (IP). Хотя при повторном соединении (С игровым сервером) отсылается только IP и соответствено хук срабатывает тоько 1 раз (то есть надо уже разделять стадии подключения)

Это что касается подключения к 6.0.5 и тд.

Есть еще функция выроботки ключей (как минимум в 6.0.5, уже используется 2 ключа, второй просто продублирован)

Code:
----- 
v0 = ((v0<<9|v1)<<10|v2)^((v2*v2)<<5);
Key_1 = (v0<<4)^(v1*v1)^(v1*0x0B000000)^(v2*0x380000)^0x2C13A5FD;   

-----
v0 = (((v0<<9|v2)<<10|v1)*8)^(v2*v2*0x0c00);
Key_2 = v0^(v1*v1)^(v1*0x6800000)^(v2*0x1c0000)^0x0A31D527F;


Пример:
06 . 00 . 07
v0 | v1 | v2

v0 = 6
v1 = 0
v2 = 7

Key_1 = 2e9bc78d
Key_2 = a25bfe7f

Далее... MD5...а ну жен он для формирования в
Code:
void NewGameCrypt::decrypt(unsigned char * in, unsigned char * out, int len) 
{
    // NOTE: It seems this needs to change based on the m_seed (m_IP).
    // Only used in Ver 2.0.4 and above.

    // This table generated basec on DWORD id passed at start. 127.0.0.1
    static const BYTE sm_bData[] = { 0x05, 0x92, 0x66, 0x23, 0x67, 0x14, 0xE3,
        0x62, 0xDC, 0x60, 0x8C, 0xD6, 0xFE, 0x7C, 0x25, 0x69 };

    // @ 04264A5 in 2.0.4
    DWORD dwTmpIndex = dwIndex;
    for ( int i=0; i<len; i++ )
    {
        out [i] = in[i] ^ sm_bData[dwTmpIndex%16];
        dwTmpIndex++;
    }
    dwIndex = dwTmpIndex;
}

sm_bData:) у нас он от рождения константный:) а на ОСИ высчитывается через MD5 (что фришарды и использовали не долгое время:))
Code:
Packet: 0x8C
Sent By: Server
Size: 11 Bytes


Packet Build
BYTE[1] cmd
BYTE[4] gameServer IP
BYTE[2] gameServer port
BYTE[4] new key



тут нас интересует BYTE[4] new key (обозавем его m_key). Он пригодится при вторичном логине. Пакет обрабатывается в handle_relay_server, ключик надо схранить...

Так вот
Code:
void NewGameCrypt::init()
{
    uint8 tmpBuff[0x100];

    memset(&ki,0,sizeof(ki));
    memset(&ci,0,sizeof(ci));

    int  i;

    makeKey(&ki,DIR_DECRYPT,0x80,NULL);

    cipherInit(&ci,MODE_ECB,NULL);

    ki.key32[0]=ki.key32[1]=ki.key32[2]=ki.key32[3]=m_IP;
//0x0100007f or 0x8edb49ad or may be client_ip xor 0x8fdb49d2

    reKey(&ki);

    for(i=0; i<256; i++)
        m_subData3[i]=i;

    blockEncrypt(&ci,&ki,m_subData3,256*8,tmpBuff);

    memcpy(m_subData3,tmpBuff,256);

    m_pos = 0; 
    dwIndex=0;
}


ki.key32[0]=ki.key32[1]=ki.key32[2]=ki.key32[3]=m_IP;
вот тут m_IP = m_key

дальше инициализировали ШифрБлок для РЫБЫ:)
Дальше от этого блока (m_subData3) берем MD5 хэш и будет sm_bData в NewGameCrypt::decrypt

На этом вроде все с шифрованиями и подключениями.


Last edited by Grin on 2009-01-08 07:25:21, edited 2 times in total.

Top
   
 Post subject:
PostPosted: 2009-01-08 05:23:26 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
теперь что качается пакетов
Code:
Packet: 0x08
Sent By: Client
Size: 15 bytes


Packet Build
BYTE[1] CMD
BYTE[4] Item Serial
BYTE[2] X Location
BYTE[2] Y Location
BYTE[1] Z Location
BYTE[1] Backpack grid index (see notes)
BYTE[4] Move Into Container Serial (FF FF FF FF drop to ground)


Subcommand Build
N/A


Notes
The backpack grid index exists since 6.0.1.7 2D and 2.45.5.6 KR.
Older clients are sending 14 bytes without this grid index byte!

Code:
Packet: 0x25
Sent By: Server
Size: 21 bytes


Packet Build
BYTE[1] cmd
BYTE[4] item serial to add
BYTE[2] item ID (objtype)
BYTE[1] unknown (00)
BYTE[2] item amount
BYTE[2] xLoc in container
BYTE[2] yLoc in container
BYTE[1] backpack grid index (see notes)
BYTE[4] container serial
BYTE[2] color


Subcommand Build
N/A


Notes
The backpack grid index exists since 6.0.1.7 2D and 2.45.5.6 KR.
For older clients server has to send 20 bytes without this grid index byte!!

Code:
Packet: 0x3C
Sent By: Server
Size: Variable


Packet Build
BYTE[1] cmd
BYTE[2] packet length
BYTE[2] number of Items to add
loop items:
· BYTE[4] item serial
· BYTE[2] item ID (objtype)
· BYTE[1] unknown (0x00)
· BYTE[2] item amount (stack)
· BYTE[2] xLoc
· BYTE[2] yLoc
· BYTE[1] Backpack grid index (see notes)
· BYTE[4] Container serial
· BYTE[2] item color
endloop


Subcommand Build
N/A


Notes
The backpack grid index exists since 6.0.1.7 2D and 2.45.5.6 KR.


Вся разница в BYTE[1] Backpack grid index (see notes).

Также на одном шарде были замечены пакеты 0xE5 произвольной длины и 0xE6 длиной в 5 байт.

Также есть проблемы с заходом на "официальные" сервера Razor проблема особо не изучалась, но смысл в том что там отсылался какойто свой пакет (разоровский), и если клиент на него не отвечал то его отключали. Так боролись с инжектом по сей день:)


Нашел обобшеный пост, там может более понятно все изложено:)
http://forums.polserver.com/viewtopic.php?f=10&t=1984

-------------------------
Модернизация консоли, под силу инжеекту, не надо к создателям уо обрашатся. Перехват функции окна, и фильтрование по условию, если был нажат энтер ничего не фильтруем, не был? все отбрасываем буквенное. Вроде все просто:)
-----------------------------
Поповоду стабильности, расматривал несколько крашей, все они были связаны с STL библиотекой, не ThreadSafe она:) Порой в этом направлении, может там где флажок выставить надо.


Last edited by Grin on 2009-01-12 16:06:38, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2009-01-08 10:56:51 
Offline
Expert!
User avatar

Joined: 2004-04-04 11:13:54
Posts: 1205
Location: Балаково, Саратовская обл.
Save\Load хоткеев пригодился бы. Про тви уже сказали.


Top
   
 Post subject:
PostPosted: 2009-01-08 11:57:41 
Offline

Joined: 2009-01-08 11:44:47
Posts: 4
Ну, ради такой темы и зарегаться не лень :)

Очень хотелось, чтобы была раскрыта информация, необходимая для написания стороннего скриптового модуля. Т.е. что он должен экспортировать, порядок взаимодействия с основным модулем инжекта и.т.д. В свое время разбирал исходники старого инжекта, лежавшие на сайте, но потом подумал что стык со скриптовым модулем мог быть сильно изменен с тех пор... Больше в открытом доступе информации не нашел.
Думаю если подобная информация будет предоставлена всем желающим - то скриптовый модуль на базе Python появится очень скоро :). Сам бы с удовольствием поработал в этом направлении, однако не уверен что найду достаточно времени ...


Last edited by Toren on 2009-01-08 14:36:58, edited 1 time in total.

Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 226 posts ]  Go to page 1 2 3 4 512 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 30 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited