1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. JonMagon
  2. JonMagon
  3. JonMagon
  4. JonMagon
  5. JonMagon
  6. JonMagon
  7. JonMagon
    Раз уж пошла такая тема... В 1.5.2 китайцы изменили опкоды, структуру пакетов и т.д. и т.п. Наша цель - сделать скриншот, где мы посреди 1.5.2 стоим. В glinkd/gamesys.conf везде, где встретится 10501, меняем на 10502 Далее надо починить вывод нпсов в округе, а то никто не поверит. Бредем в IDA в ядро по функции S2C::CMD::Make<S2C::INFO::npc_info>::From<packet_raw_wrapper>(packet_raw_wrapper *const wrapper, gnpc *pObject) Суть: "удвоить" выбранное. Т.к. китайцы слепили в очередной раз фигню: первый раз ID указывает на облик, второй раз на его функции (моб, проститутка и т.д.) [ATTACH] Запоминанием, куда сувать будем — 0x080724E3 Бредем по elementdataman::save_data(elementdataman *const this, const char *pathname), смотрим, что она няш мяш, её и будем затирать, все равно нигде не вызывается. [ATTACH] Записываем адрес, где push ebp — 0x0829B974 Переводим jmp 829B974h с учетом позиции, куда будем сувать в опкод E9 8C 94 22 00 Ой вей, пять байт, как раз весь call затрется. Бредем обратно в S2C::CMD::Make<S2C::INFO::npc_info>::From<packet_raw_wrapper>(packet_raw_wrapper *const wrapper, gnpc *pObject) И лепим прыжок вместо вызова [ATTACH] Терь переводим в опкод, учитывая, что будем сувать по 0x0829B974 call 0806922Eh add esp, 4 push eax call 0806922Eh jmp 080724E8h Получаем E8 B5 D8 DC FF 83 C4 04 50 E8 AC D8 DC FF E9 61 6B DD FF И суем это вместо данных той функции, оставшиеся 3 байта от инструкции затираем 0x90, чтобы красиво было. [ATTACH] Загружаем на сервер и заходим через 1.5.2 клиент и ловим ошибку, т.к. опкоды кривые (ну а что? один пакет пофиксили и все? да хрен там, кому надо правьте хештейбл опкодов в глинкд) [ATTACH] Клацаем Esc, становимся няшнее и делаем скриншот [ATTACH]
    Автор темы: JonMagon, 14 мар 2015, ответов - 22, в разделе: Оффтоп
  8. JonMagon
  9. JonMagon
    Просто это один из немногих пакетов, в которых китайцы наделали какую-то каку. И приходится иногда лезть в дизасм и смотреть, что происходит внутри функции. [ATTACH] А потому, та самая маска должна равняться 0x20 <? require_once("packet_class.php"); $GetRole = new WritePacket(); $GetRole -> WriteUInt32(-1); $GetRole -> WriteUInt32(1024); $GetRole -> WriteUInt32(0x20); // mask $GetRole -> Pack(0xBBD); if (!$GetRole -> Send("localhost", 29400)) return; $GetRole_Re = new ReadPacket($GetRole); $GetRole_Re -> ReadPacketInfo(); $GetRole_Re -> ReadUInt32(); $GetRole_Re -> ReadUInt32(); // retcode $GetRole_Re -> ReadUInt32(); // mask $GetRole_Re -> ReadUByte(); // gameserver_id ??? // GRoleDetail start $GetRole_Re -> ReadUByte(); // char $GetRole_Re -> ReadUInt32(); // id $GetRole_Re -> ReadUInt32(); // userid // GRoleStatus start $GetRole_Re -> ReadUByte(); // version $GetRole_Re -> ReadUInt32(); // level $GetRole_Re -> ReadUInt32(); // level2 $GetRole_Re -> ReadUInt32(); // exp $GetRole_Re -> ReadUInt32(); // sp $GetRole_Re -> ReadUInt32(); // pp $GetRole_Re -> ReadUInt32(); // hp $GetRole_Re -> ReadUInt32(); // mp $GetRole_Re -> ReadFloat(); // posx $GetRole_Re -> ReadFloat(); // posy $GetRole_Re -> ReadFloat(); // posz $GetRole_Re -> ReadUInt32(); // worldtag $GetRole_Re -> ReadUInt32(); // invader_state $GetRole_Re -> ReadUInt32(); // invader_time $GetRole_Re -> ReadUInt32(); // pariah_time $GetRole_Re -> ReadUInt32(); // reputation $GetRole_Re -> ReadOctets(); // custom_status $GetRole_Re -> ReadOctets(); // filter_data $GetRole_Re -> ReadOctets(); // charactermode $GetRole_Re -> ReadOctets(); // instancekeylist $GetRole_Re -> ReadUInt32(); // dbltime_expire $GetRole_Re -> ReadUInt32(); // dbltime_mode $GetRole_Re -> ReadUInt32(); // dbltime_begin $GetRole_Re -> ReadUInt32(); // dbltime_used $GetRole_Re -> ReadUInt32(); // dbltime_max $GetRole_Re -> ReadUInt32(); // time_used $GetRole_Re -> ReadOctets(); // dbltime_data $GetRole_Re -> ReadUInt16(); // storesize $GetRole_Re -> ReadOctets(); // petcorral $GetRole_Re -> ReadOctets(); // property $GetRole_Re -> ReadOctets(); // var_data $GetRole_Re -> ReadOctets(); // skills $GetRole_Re -> ReadOctets(); // storehousepasswd $GetRole_Re -> ReadOctets(); // waypointlist $GetRole_Re -> ReadOctets(); // coolingtime $GetRole_Re -> ReadOctets(); // npc_relation $GetRole_Re -> ReadOctets(); // multi_exp_ctrl $GetRole_Re -> ReadOctets(); // storage_task $GetRole_Re -> ReadOctets(); // faction_contrib $GetRole_Re -> ReadOctets(); // force_data $GetRole_Re -> ReadOctets(); // online_award $GetRole_Re -> ReadOctets(); // profit_time_data $GetRole_Re -> ReadOctets(); // country_data $GetRole_Re -> ReadOctets(); // king_data $GetRole_Re -> ReadOctets(); // meridian_data $GetRole_Re -> ReadOctets(); // extraprop $GetRole_Re -> ReadOctets(); // title_data $GetRole_Re -> ReadOctets(); // reincarnation_data $GetRole_Re -> ReadOctets(); // realm_data $GetRole_Re -> ReadUByte(); // reserved2 $GetRole_Re -> ReadUByte(); // reserved3 // GRoleStatus end $GetRole_Re -> ReadUString(); // name $GetRole_Re -> ReadUInt32(); // race $GetRole_Re -> ReadUInt32(); // cls $GetRole_Re -> ReadUInt32(); // spouse $GetRole_Re -> ReadUByte(); // gender $GetRole_Re -> ReadUInt32(); // create_time $GetRole_Re -> ReadUInt32(); // lastlogin_time $GetRole_Re -> ReadUInt32(); // cash_add $GetRole_Re -> ReadUInt32(); // cash_total $GetRole_Re -> ReadUInt32(); // cash_used $GetRole_Re -> ReadUInt32(); // cash_serial echo "FactionID: " . $GetRole_Re -> ReadUInt32() . "<br>"; // factionid echo "FactionRole: ". $GetRole_Re -> ReadUInt32(); // factionrole 2 - Master ... 6 - Member ?>
    Сообщение от: JonMagon, 11 мар 2015 в разделе: PW Вопросник
  10. JonMagon
  11. JonMagon
  12. JonMagon
    При отправке в горн выставляется определенный набор смайлов, что мне вообще не понравилось. После изменений ниже в горн-чат будут отправляться смайлы, которые сейчас напялены на персе, но важно учитывать, что при выборе смайлов для отправки в горн вместо них все равно будут отображаться те, что задуманы китайцами (какие-то рыбы, или что это?). Открываем ядро и бредем до gplayer_imp::SendFarCryChat Там смотрим, что у нас какие-то сравнения и прыжки идут. Кому они нахрен нужны? Стираем их и захватываем со всем этим всовывание 6-го набора смайлов в emote_id [ATTACH] Открываем gs hex редактором, находим 80 7D FF 01 75 0F 8B 45 08 0F BE 80 7F 0C 00 00 89 45 EC EB 07 C7 45 EC 06 00 00 00 И заменяем на 90 90 90 90 90 90 8B 45 08 0F BE 80 7F 0C 00 00 89 45 EC 90 90 90 90 90 90 90 90 90 [ATTACH] Загружаем обратно на сервер, запускаем и прыгаем як не москали до потолка. [ATTACH]
    Автор темы: JonMagon, 10 мар 2015, ответов - 8, в разделе: PW Документация
  13. JonMagon
  14. JonMagon
  15. JonMagon
  16. JonMagon
  17. JonMagon
    Позволяет собирать и читать пакеты на PHP. Слеплен на скорую руку. Приветствуются предложения. Структура: [ATTACH] Пример получения ника перса по его ID (в пакете есть и другая инфа, чтобы было, смотреть структуру GRoleBase), чтобы понять работу класса: struct __cppobj __attribute__((aligned(2))) GRoleBase : Rpc::Data { char version; unsigned int id; Octets name; int race; int cls; unsigned __int8 gender; Octets custom_data; Octets config_data; unsigned int custom_stamp; unsigned __int8 status; int delete_time; int create_time; int lastlogin_time; GRoleForbidVector forbid; Octets help_states; unsigned int spouse; unsigned int userid; Octets cross_data; unsigned __int8 reserved2; unsigned __int8 reserved3; unsigned __int8 reserved4; }; <? include("packet_class.php"); $GetRoleBase = new WritePacket(); $GetRoleBase -> WriteUInt32(-1); // always $GetRoleBase -> WriteUInt32(1024); // userid $GetRoleBase -> Pack(0xBC5); if (!$GetRoleBase -> Send("localhost", 29400)) // send to gamedbd return; $GetRoleBase_Re = new ReadPacket($GetRoleBase); // reading packet from stream $packetinfo = $GetRoleBase_Re -> ReadPacketInfo(); // read opcode and length $GetRoleBase_Re -> ReadUInt32(); // always $GetRoleBase_Re -> ReadUInt32(); // retcode $GetRoleBase_Re -> ReadUByte(); // version $GetRoleBase_Re -> ReadUInt32(); // id echo $GetRoleBase_Re -> ReadUString(); // show rolename ?>
    Автор темы: JonMagon, 6 мар 2015, ответов - 9, в разделе: PW Web
  18. JonMagon
  19. JonMagon
  20. JonMagon