Перейти к содержанию

temtriss

Пользователи+
  • Публикаций

    168
  • Зарегистрирован

  • Посещение

  • Победитель дней

    7

temtriss стал победителем дня 15 октября 2018

temtriss имел наиболее популярный контент!

Репутация

46 Rookie

Информация о temtriss

  • Звание
    Спамер

Информация

  • Пол
    Array

Посетители профиля

4170 просмотров профиля
  1. Если кому интересно, (ссылку не оставляю, что бы за рекламу не ругали) на форуме r0 crew есть утечка иды 7.6 Оригинальный пост: Если можно, то могу запостить ссылку на форум
  2. Если я правильно понял, всю нужную информацию ты умеешь получать, тебе ее надо только в файл записать. Смотри, я бы посоветовал ДЛЛку на сях)) и использовать fstream самый быстрый(по кол-ву кода) способ. что-то типо этого... да, это весь логер. fout(полное имя файла, все папки должны существовать, файл не обязательно), всегда в файл будет добавлятся так как папаметр std::ios_base::app - аппенд... Это в принципе быстро и удобно) void Logger::Out(const char* str) { std::ofstream fout(this->m_strLogFileName.c_str(), std::ios_base::app); fout << std::string(str).c_str(); fout.close(); } Если будет интересно, пни в дискорде, расскажу как реализовать логер(тут я просто с своего кода дёрнул кусок, лениво было писать) Wi11ka#4371 Если принципиально надо вин-апи, то... работае это примерно так CreateFile - с параметром OPEN_ALWAYS(0x04 вроде), он подойдет в случае если файла нету, то будет создан новый, если файл есть, то будет открыт существующий. Далее нам надо узнать, сколько занимает файл, что бы не писать в него с нуля и не перезаписывать инфу в нём. Остальные параметны можешь найти на MSDN я на память не помню. GetFileSize(HANDLE - его возвращает CreateFile, NULL) дале узнав размер ставим указатель на конец файла SetFilePointer(HANDLE, Результат GetFileSize, 0, FILE_BEGIN(Вроде этот макрос равен 0)) теперь нам надо записать то, что мы получили в файл. как я понимаю у тебя сырые данные и скорее всего не готовая строка. для С++ я бы использовал sprintf... есть ли какие-то аналоги на WINAPI я без понятия, тут не подскажу.... Но чисто технически её можно будет вызвать из рантайм библиотеки сишной, но это чисто технически, я извращенец ещё тот, но не на столько Далее записать строку в файл WriteFile( HANDLE, Указатель на строку, размер строки, указатель на буфер, в который вернется кол-во записаных байт, NULL) ну и закрыть хэндл CloseHandle(HANDLE) ну опять же учитывая, то что ты написал или то, что я понял из этого, вызвать эти функции ты сможешь, и передать им параметры Надеюсь нечего не забыл, очень давно не юзал WINAPI.
  3. Ну как ты говоришь, игра синхронизируется с сервером. То каким образом тебе поможет подмена пакетов? Ну купил ты к примеру что-то за бабки. Отправил пакет о покупке на сервер. Сервер получил пакет, чекнул твою валюту, у тебя её нету и соответственно послал тебя нафиг. Если подменишь посыл сервера, то это даст только визуальный эфект(и то не факт), ты получишь предмет, которого по факту у тебя нет. И соответсвенно работать он не будет.
  4. Всем спасибо, последняя идея сработала) т.к. функция не использует std::string как std::string Типо так: Сорян, зря открыл тему.
  5. Всем привет :)) Кто может подсказать, возникла необходимость вызвать функцию которая принимает std::string как параметр... Естественно просто подсунуть ей std::string не получится(на сколько мне известно, реализация зависит от кучи факторов, версии компилятора, флагов, погоды :D) по этому они будут отличатся. this ptr у меня есть :)) Я чуток по отлаживал. В моей МСВЦ 2019 std::string строка или указатель на строку находится сразу в std::string В игре же +0x4 так что исходя из этого, получается a2 - что-то... а3 строка или указатель на строку в зависимости от размера строки. > 16 указатель, <=16 строка а8 - размер строки далее вторая std::string чисто технически, я могу вручную вызвать все проверки из этой функции в своём коде и вызвать евент т.к. он вызывается чуть ниже(я уже это сделал, но без всех этих проверок очень легко уронить игру) но кода тут очень много в функции, по этому хотелось бы как-то обойтись) Не кто попадал в подобную ситуацию? чисто технически отработает ли это если я просто подсуну в а3 и а10 char* а, в а8 и а15 strlen на эти строки? P.S. последняя мысль пришла в голову пока писал пост, сейчас пойду опробую
  6. ну да, тут больше нужен ассемблер) Я бы сказал больше всего нужен ассемблер) Так что книги по асму в руки и вперед, далее посоветовал бы почитать про реверсинг, что то типо IDA Pro The Book. По поиску уязвимостей и прочего. На русском языке ты мало чего найдешь, большество информации на английском... Как-то так))
  7. Всем спасибо, решение нашел сам. Если кому-то интересно: Я расширял стэк в своей функции и по хз какой причине на Win 10 это работало нормально, а на win 2012 Server нет. Я сделал патч на расширение стека в оригинальной функции вместо sub esp, 0c пропатчил на sub esp, 10 А в своей функции соответсвенно убрал расширение стека. И всё заработало))) больше 2х недель мучался :DDD В общем тему можно закрыть! Всем спс :)))
  8. Я и так не накосячил со стеком))) я проверял) Да и сложно ошибится, расширил стэк на 4 и почистил на 4 больше)) всё) Темболее, что функция работает. Проблемы с стэком точно нет) Это не совсем хук, я просто внедряю кусок кода. Мне не нужно переписывать всю функцию. Мне нужен маленький кусочек. Когда я переписываю полностью функцию, я так и делаю. А так же какая разница? Я могу так же юзануть detours только вот нечего не поменяется... у меня нету конвенции вызова у функции т.к. она мне не нужна... мне нужно записать из есх(GAntityActor) + HP, MP, STA offset значение)) все... изобретать велосипед не хочется функция и так готовая) И ей абсолютно паралельно сколько байт отправлять(структура кладётся в SingleBlob, функция просто выделяет память и с помощью memcpy копирует то, что ей скормили с проверкой размера < 1024)
  9. Даа) sol мощная либа, пару раз юзал)) Но ИМХО C++ ,SWIG + Python круче)) Ну это чисто ИМХО)) P.s. сори за офтоп.
  10. Ох, как давно меня тут небыло) Всем здарово, кто меня помнит В общем дело такое, занимаюсь в данный момент игрой, расширяю функционал клиентской и серверной части. Столкнулся с некой проблемой: Игра работает с ХП/МП/Стаминой с int32, как клиентская так и серверная часть. Но какого-то беса разрабы решили, в пакетах отправлять int16. Исходников естесвенно нету, но есть ИДА и желание этим заниматся :)) Я нашел функцию в клиентской и серверной части. Переписал полностью клиентскую, и чуток изменил серверную. Ниже по спойлером серверная функция. С которой возникли некоторые проблемы. Сервер прекрасно работает и отправляет мне пакет с int32 параметрами. Клиент так же на ура их принимает и всё работает. И на моей машине проблем нету. Так же держатель сервера тестил на своей локальной машине и так же не каких проблем. А вот при запуске на сервере, при смене локации падает сервак.(после этого тестили ещё на 3-4 машинах под WIn10, на всех работает нормально, сервер под Win2012 Server) В общем что я сделал в данной функции. Я иньекчу кусочек кода __declsepc(naked) функцию в получение параметров movzx eax, word ptr [ecx+1D8h] Вот пример моей функции. Увиличивая стэк, что бы влезла структура с х3 int32(12), оригинальная структура х3 int16(6), но компилятор вырвнял ее до 8)) sub esp, 4 достаточно Далее вношу полные параметры и пушу параметр для new и соответственно прыгаю обратно на new Таже делаю 2 патча небольших, а именно патчу размер структуры тут: push 6 ; size lea ecx, [esp+0Ch] ; Load Effective Address push ecx ; tTD_UPDATE_SIMPLE_STATUS mov ecx, eax ; this call ??0MCommandParameterSingleBlob@minet@@QAE@PBXG@Z вместо 6 пушу 12, можно конечно и бинарник пропатчить, но я в любом случае иньекчусь в процесс, так что без разницы. Ну и поменял пару смешений относительно стека далее по коду и очистку стека. Как я и говорил выше, это прекрасно отработало на всех компах, которых мы тестили под управлением Windows10. Самый интересный момент, сервер плюет exception по адресу, на котором он быть не должен, да и сам exception code странный, не смог его не нагуглить, не error lookup не чего не выдал: 40010006 Так же самая большая странность, если открыть на сервере Вижал студию и присоеденить её как отладчик до ексепшена или во время, то студия не выдаёт ошибок или чего-то еще, а просто продолжает процесс без каких либо проблем. И сервер спокойно работает и проблема исчезает. Но как по мне странно запускать сервер и вешать на него студию в дебаг моде :DDD Может у кого-то вылезал подобный ексепшн или кто-то сталкивался с такой дичью? Всем спс :)) P.s. отлаживать постоянно сервак возможности нету. p.s.s свой Exception handler писал, устанавливал и хукал SetUnhandledExceptionFilter что бы не переставили) Но почему-то результата это не дало. Он не отработал, хотя на Access Violation(специально подстроеный) плюнул мой обработчик.
  11. Я понимаю, попробую набратся сил и записать. А то я за неделю 16 часов поспал((( Сегодня высплюсь и завтра на свежую голову попробую все записать
  12. Честно, учитывая выход Fallout 76 и завала на работе, я чувствую, что вообще подзабью на это дело, но это пока не точно
  13. К сожалению не успел записать урок, но полностью подготовил материал. Если на неделе будет свободное время, то запишу. Надеюсь, что найду время до выходных
  14. Новый видосик в разделе видео! :))
  15. К моему величайшему сожалению, в связи с печальными обстоятельствами(жена попала в больницу :((( ) на этой неделе я не успел подготовить урок и соответственно записать, да и так как ребенок полностью на мне, записать даже готовый материал было бы очень проблематично. Так что надеюсь на неделе наверстать упущенное, и к след. выходным сделать несколько уроков сразу(да и выходные вроде длинные будут - 3 дня).
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.