

CHBS
Пользователи-
Постов
62 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент CHBS
-
Спасибо за информацию, а [C6 /0 ib] - [MOV r/m8, imm8] из этой инструкции, /0 ib чем является? О, как, спасибо большое, я просто голову ломал из-за порядка байт, разворачивал но получалось 87 C6 D0 00 00 00 01, стало намного яснее. По поводу не загоняйся - мне просто стало интересно из чего сигнатура строится, еще нужно бы понимать, какие аргументы меняются и как их определять, понятное дело что mov это опкод и он будет неизменным в сигнатуре, но вот может ли сменится регистр в блоке инструкций или он уже назначен на rdi? Просто у него сигнатуру кончилась до этого опкода, если же посмотреть на предыдущую инструкцию // 4C 8B 35 F3 A8 2A 02 mov r14, cs:_g_pGameEntitySystem 35 тут к чему будет относится? Спасибо, она? [CENSORED]
-
Всё равно не ясно, ведь 41 опкод зарезервирован для инструкции INC, та же кстати история с // C6 87 D0 00 00 00 01 mov byte ptr [rdi+0D0h], 1 // 49 8B 3E mov rdi, [r14] Даже если документацию открыть на 1169 странице, https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf, То опкоды MOV начинаются с 88+, что там делает в первой строке 87 мне не понятно, а еще более не понятен порядок байт, должно быть либо с лева, либо с права на лево, а опкоды по середине почему-то.
-
Да там же 5 тысяч страниц, https://en.wikipedia.org/wiki/X86_instruction_listings Даже тут не указано про что инструкция push может иметь назначение опкода 41. // 41 55 push r13 Если я все правильно понял, то r13 это регистр общего назначения, и push у него должен быть соответственно в диапазоне 0x50-0x57, в чём подвох?
-
// 41 55 push r13 Тогда почему тут 41?
-
Я заранее извиняюсь если создал тему не в том разделе, но посчитал что это будет ближе к ассемблеру. Вопрос возник при изучении исходного кода одного из сканнеров сигнатур https://github.com/LWSS/McDota/blob/master/src/Scanner.cpp Если мы допустим откроем что нибудь в отладчике, увидим набор инструкций и их опкодов с аргументами, вопрос вот в этом моменте // 55 push rbp // 48 89 E5 mov rbp, rsp // 41 56 push r14 // 4C 8B 35 F3 A8 2A 02 mov r14, cs:_g_pGameEntitySystem // 41 55 push r13 // 49 89 FD mov r13, rdi // 41 54 push r12 // 53 push rbx // 31 DB xor ebx, ebx // C6 87 D0 00 00 00 01 mov byte ptr [rdi+0D0h], 1 // 49 8B 3E mov rdi, [r14] // E8 EA 4B E2 FF call CGameEntitySystem__GetHighestEntityIndex PatternFinder::FindPatternInModule("libclient.so", "55 48 89 E5 41 56 4C 8B 35 ?? ?? ?? ?? 41 55 49 89 FD 41 54 53 31", "reinitPredictables"); Не могу понять какой байт имеет опкод push? если посмотреть на первую строку из кода то мы видим 55, но почему не указан аргумент rbp? Т.е я предполагал что если идет опкод с аргументом, то должно быть его байтовое обозначение, т.е например из первой строки 55[push] 89[rbp] например. В следующей же строке это все присутствует 48[mov] 89[rbp] e5[rsp] Так почему же в первой строке где у нас push rbp, не указан байт-аргумент? Так-же почему 3-ья строка имеет другой опкод отличный от первого? 41[push] 56[r14], если push вроде как должен быть 55? Я знаю что я как-то не так интерпретирую информацию, что очень скажется на конечном результате изучения, поэтому и задал вопрос, поставьте сразу на правильный путь, почему отладчик так выводит назначение опкодов и аргументов?
-
Хотелось бы узнать, а адрес 0x74c37990 откуда был взят? Он статический во всей памяти, или конкретно вопрос как собственно найти адрес у этой функции непосредственно в CE?
-
Не могу редактировать. Вообщем проблема странная, будто pos обнуляется, т.е первые раз я сохраняю позицию, выполняя метку store: далее я проезжаю сколько то метров, выполняю метку restore: меня телепортирует, а если проехать например пару сотен метров, то pos вовсе будет держать в себе значения рандомного флоата, например моя настоящая позиция x = 3000, y = -2000, z = 200 в posX = 1.3141431413E+4, posY = 2.13123123123E+4, posZ = 0.31413413413 Не могу понять почему так происходит, вроде pos не должен записываться пока я не выполню метку store, все выполняется по клавишам
-
Когда я писал, ее не было просто, сообщение отредактировано ведь Вылета как такового вроде бы и нет, я не могу это проверить, потому что скрипт работает явно не стабильно, дело в том что когда я включаю скрипт, на нем вешается крестик, но в моем случае крестика нету, и я получается не могу обратно восстановить инструкцию, и немогу понять почему крест не вешается и инструкция не восстанавливается
-
О_о а где оно повторяется то? убрал, кстати почему? как вообще происходит выполнение кода, ведь нет нигде указания что нужно зайти в метку pflag, и выполнить db 0 Прописал Вот да, я в это и впоролся, и приходится пока ручками восстанавливать инструкцию, не понимаю почему после выполнения своих действий, он не восстанавливает по нажатию мои собственные инструкции Имена меток попутал restore -> store, store -> restore Посмотрел в бряке регистры, был занят, сделал через fld, fstp, хоть понял как это теперь работает Инструкция пересчитывает на самом деле много адресов Привожу ниже текущий код.
-
Доброго времени суток форумчане, написал вот такой скрипт (логи присутствуют) Цель скрипта, сохранение, восстановление позиции машины по флагу, если смотреть на видеоурок под спойлером То во первых почему то крОшится игра, а во вторых не выделяется память под position_flag, т.е я не могу вывести адрес в список адресов что бы там задать ему флаг.
-
Это в какой геолокации то? Вообщем по теме @Garik66 через скайп объяснил мне что к чему, научил сравнивать структуры игрок-враг, вообщем нашел @Garik66 инструкцию работающую со всеми колесами включая врагов, помог с фильтром, объяснил как работает cmp, je, jne в данном контексте, и вообще там полтора часа разговора по теме, всё не описать, но научил меня основным аспектам! @Garik66 Огромнейшее спасибо!!! По итогу буст авто работает как часики))
-
Так черт его дери в том то и дело, что она работает с колесами, противника 3+Я(4), колеса 4, 1 колесо = 1 адресс с значением, 4*4=16, 16 адресов с которыми она работает это точно, но я не могу написать фильтр, точнее пока не пойму как мне найти свою машину потому что в первые 8 адресов при бряке на запись, там идут машины противников, и хлам адреса, но колеса моей машины находятся после 8-и этих адресов, и я вот не знаю как мне посмотреть с какими адрессами она работает конкретно моей машины, вот как обойти ограничение в 8 адресов? Картинка с адресами