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

exorcise

Пользователи
  • Постов

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

  • Посещение

Весь контент exorcise

  1. Что за фигня у вас с форумом? то недоступен, то не существует, то вот ответы пропали. Я писал что уже разобрался и тему можно закрыть.
  2. Я уже опытным методом это понял =))) Спасибо. Я думал сначала просто что в коде это, можно заюзать. Но получается что не в коде. Тогда получается что если к трейнеру добавить возможность читать этот файл, то и поставлять его нужно вместе с трейнером, так? а иначе откуда он читать то будет. Верно?
  3. А что в гугле то писать? А почему тогда у меня в релизной версии трейнера тоже есть названия функций, если смотреть через дизасм? Вроде же не должно быть. Как их спрятать? Пишу в VC++ clr
  4. Я уже нашёл адрес. Мне в трейнере теперь надо запилить этот адрес. Хотелось бы в виде той метки. А можно ссылку где можно посмотреть? Пишу на C++.
  5. тоесть такой вид "SimSalabim.Game::SuperMagic+15" в трейнере совсем никак заюзать нельзя? так вроде красивше =) Тогда почему раньше, в предыдущей версии игры дизассемблер СЕ ничего не нашёл, в смысле названия функций, а сейчас в новой он вдруг уже нашёл?
  6. Да, если отключить "метки" то показывает как обычно. Но дело в том что всегда в играх встречал только такой вид адресов: "SimSalabim.exe+offset" и тут мне всё понятно. SimSalabim - точка входа в игру, offset - смещение до нашего адреса. Но вот впервые я вижу это: "SimSalabim.Game::SuperMagic+15" и мне не понятно что тут и как? поэтому прошу чтобы мне объяснили что это и как использовать при написании трейнера? чтобы сразу в трейнере переходить к SimSalabim.Game::SuperMagic а от него уже смещаться.
  7. CE в отладчике при включенной модульной адресации отображает не как обычно "SimSalabim.exe+offset" а вот так "SimSalabim.Game::SuperMagic+15" Можете объяснить что это значит? И как этим воспользоваться при написании трейнера? Обычно: DWORD base = get_base(address); DWORD function = base + get_offset(address); А сейчас как быть то?
  8. вообще закрашило игру. да и кстати не commis как ты пишешь а comiss
  9. lamalamaz, не этот comiss а другой. comiss xmm0, [esi+B8]. он у тебя на скрине один из верхних. попробуй у себя занопить их. это cmp [esi+00000078],6B726F77 уже не прокатит.
  10. lamalamaz, о, спасибо тебе друг. теперь многое прояснилось . Те примеры что ты привёл, действительно работают когда просто нападаешь на них или они на тебя. Но мне надо немного другое. А именно "убить всех врагов одной кнопкой". Как это реализовать? Так как у тебя сейчас есть игра, попробуй занопить comiss и умрут все. Абсолютно. Надо как-то выделить из этих всех - своих персонажей. Я пробовал, ничего не выходит
  11. Coder, там только три инструкции. Всмысле которотые как-то влияют на хп. Всех примерно 10, из них: две с минусовым смещением и одна что-то проверяет - comiss. А остальные даже если нопишь ничего не меняется.
  12. Xipho, Но у меня такое смещение есть. movss [ecx-00000364],xmm0 оно записывает жизнь каждому существу. В ecx-364 находится всегда один адрес, и он каждый раз меняется в зависимости от того кого ты бьёшь.
  13. keng, а если адрес врага не 123456+12 а 123456-12 ? то писать результат вычислений от смещений? просто тут 123456+12, 123456 начало структуры. А тут 123456-12 где начало структуры? она что смещается за саму себя? Структура же создаёт после себя какие-то данные. А откуда она знает что там до неё находиться?
  14. krocki, ты то понятно объяснил, я дошёл до структур, а дальше фиг знает что там искать надо. смещения какие-то, куда? чего? тьфу блин. ерунда какая-то. lamalamaz, ты ничего не путаешь. но в моём случае так movss xmm0, [esi+000000B8] изменяются жизни.
  15. krocki, в первый раз сталкиваюсь со структурами, в смысле не пользовался этими инструментами раньше. немного не разобрался... lamalamaz, да, высветились все адреса с которыми инструкция работает. вы правы, при появлении на экране любых живых существ инструкция comiss xmm0,[esi+000000B8] сразу получает ко всем доступ. а те инструкции что пишут при нанесении урона не реагируют. тоесть если их занопить то урона больше нет, но когда к ним обращается эта инструкция comiss xmm0,[esi+000000B8] то всё равно меняется значение жизни. и не правильно вангуешь, запись значения жизни выглядит не так movss [esi+000000B8],xmm0 а так movss xmm0, [esi+000000B8] мне просто нужно чтобы именно эта инструкция не могла ничего делать. а она со ВСЕМИ живыми существами работает.
  16. я ничего не делал, потому что не знаю как быть в такой ситуации. всё что я могу сделать - заноптать все инструкции. я так всегда и делаю. занопил и всё, больше не отнимает. а тут блин занопил, а оно на всех действует =( comiss xmm0,[esi+000000B8] << это получает доступ. проверяет хп у всех. jb 014F9E27 mov eax,[esi] mov ecx,esi call dword ptr [eax+00000090] << а тут наверное все они и сидят. я заходил туда шагом в CE когда бряк сработал. там много кода в котором я ничего не понял. movss xmm0,[esi+000000B8] ucomiss xmm0,xmm0 lahf test ah,44 jnp 014F9E42
  17. Да что за форум у вас? Ответы всегда: сдедай, напиши. Согласись, если бы я знал как сделать то я бы сюда не писал а сделал бы. А раз я создал тему, то уже логично предположить что я без понятия что и как.
  18. В игре Craft The World одна инструкция проверяет жизнь у всех тварей(враги, свои, животные). Как из неё исключить своих? Это стратегия и своих может быть очень много.
  19. а почему регистр xmm* не принимает никаких цифр? только цифры из адресов movss xmm0, [*] почему нельзя так movss xmm0, 100500? < это бы сразу всё решило
  20. А если куда попало, то при вызове этого кода игрой может быть краш? руками? Если я создаю трейнер. Мне нужно чтобы он это умел.
  21. keng, спасибо за подробнейшее объяснение. А почему бы не писать в адресное пространство самой игры? Вот смотри. В игре есть огромный кусок байт-кода который содержит нули, тоесть 0x00000000. и такого пространства много. Почему бы не записать туда? Но куда бы я не записал, как перевернуть адрес? Допустим я программно выделил память у меня есть адрес в DWORD памяти которую я выделил, как перевернуть эти байты? а VirtualAllocEx тоже не простая штука. Ей ещё какие-то привилегии надо. Как их получить?
  22. ну тут ты увеличил foo на 1 и переписал его. но &foo что делает? указатель на адрес содержажий это значение в памяти на данный момент? которая существует пока открыта программа. я не понимаю как в конкретном адресе это сделать. инструкции ведь хранятся по определенным адресам и выполняются в определенный момент. просто тут в этом примере значение храниться у тебя в программе. а у меня в дпугой. да ещё и в регистре. просто если я напишу mov [foo],eax то регистр будет из моей программы, а надо из чужой.
  23. А зачем вообще права менять? права стоят "чтение, выполнение" но всё прекрасно пишется в память. Это я имею ввиду запись байт-кода. А значения не пишутся, я ставлю полный доступ и не возвращаю исходное состояние. DWORD GetMyData() { DWORD result = 0; __asm mov result,ecx return result; } ^ это интересная штука. но как ей показать адрес с которого нужно считать ecx? да, я сделаю инжект кода. я вот думал сделать так: записать прямо в игре на пустой байт-код "00000000" своё значение например "500" и заменить инструкцию с "mov eax, [ecx]" на "mov eax, [game+offset]" но возникла проблема. Каждый запуск точка входа игры меняется и соответственно адрес game+offset тоже. Я то могу получить в dword этот адрес и смещение, но как его перевести в byte? или как записать dword в память. но ещё надо как-то "перевернуть" байты. поэтому я подумал сложно это. может проще просто подменить ecx. расскажите про getthreadcontext как им осуществить задуманное? а про выделение памяти тоже думал. тогда я бы просто прыгнул туда. но если моя программа закроется то память тоже, и не будет работать. А если не освобождать память, то это же тоже плохо. Но это ладно, я хотел через malloc сделать, но не понял как.
  24. Так я уже нашёл кусок кода. Есть адрес, как именно в этом месте подменить регистр? Ведь на каждом байте меняются регистры. Можно пример как с адреса считать регистр, а затем переписать его?
×
×
  • Создать...

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

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