Сейчас на форуме: igorcauret (+8 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Проблема с бряком |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 30 июня 2014 19:44 · Личное сообщение · #1 Пытаюсь брякнуться при изменение мной конкретного числа в игре. Нашел адрес в памяти где хранится это число. Ставлю бряк на запись в память по указанному адресу. Переключаюсь в игру, бряк тут же срабатывает, хотя я даже с паузы не снял игру(естественно число не изменял). F5 можно нажимать и нажимать, брякается постоянно. До снятия игры с паузы даже не доходит. Адреса все время разные, но для примера: мне надо брякнуться при изменение значения по адресу 0321Е1С9, а игра все время пишет ноль по адресу 0321Е1В4. Почему срабатывает мой бряк? Бряк ставлю в сисере через команду : bpm 0321Е1С9 w п.с. кстати кто-нибудь знает где в сисере поменять цвет всех цифр.? может есть у кого идеи как по другому мне брякнуться? Зарание спасибо за помощь. ![]() |
|
Создано: 04 июля 2014 03:02 · Личное сообщение · #2 |
|
Создано: 04 июля 2014 07:51 · Личное сообщение · #3 Kozak пишет: Если их поставить на бесконечность, то каждый следующий юнит будет дороже предыдущего. а не проще тогда ломануть, чтоб бесплатно было ![]() Kozak пишет: у тебя получилось в оле отлаживать игру? через логи по точкам останова смотрел (Ctrl+F5), без паузы при срабатывании. ![]() |
|
Создано: 06 июля 2014 09:15 · Личное сообщение · #4 ThugboyZ так прога японская, у меня кряказябры, ничего не понять в настройках, русификатор не нашел. ELF_7719116 ломать не выход, потому что после игры в инете, мой соперник может пересмотреть игру, зайдя на мой цвет и это все спалится, со мной потом играть никто не будет. Мдя не думал что будет так много проблем выйти на альт+клик. Дело в том что в оригинальном файле(dmcr) нет такого события вообще(альт+клик) +50, только +1, +5 и бесконечность. +50 это добавили умельцы, но я видел игры в записи где солдат покупали и +100 и +200, думаю в привате есть и больше. Два файла я уже пытался сравнивать, там столько отличий что найти не получилось. Потому что помимо +50 устранялись глюки и баги игры, складывается впечатление, что изменения вносились в исходники. Игра на тот момент уже не поддерживалась разработчиком. ![]() |
|
Создано: 06 июля 2014 11:47 · Личное сообщение · #5 Kozak пишет: Мдя не думал что будет так много проблем выйти на альт+клик да я же дал Вам посказку. а Вы не хотите раскрутить стек вызовов или хотя бы посмотреть, что экспортируется в dmcr.exe. придется все разжевать и самому сделать: во-первых, в экспорте есть недвусмысленные функции и даже с описанием для хакеров-лентяев ProduceUnit(Units,UnitType,Dest) ProduceOneUnit : Invalid <UnitType> ProduceUnit(Units,UnitType,Dest) : Invalid parameter <Units> думается мне, что можно устроить отдельный тред и крутить их на здоровье во-вторых, с событиями по клавишам ДВА ВАРИАНТА вариант №1: зайти с конца. если набраться немного терпенья и без помощи сторонних утилит, используя лог точек останова без паузы, таки можно выйти на обработчик событий(в нашем случае альт+клик): Code:
где 0050D424 |. E8 6374FFFF CALL 0050488C с аргументами (arg1. [esp+4] (byte)- id игрока, arg.2 [esp+8](byte) - кол-во солдат, arg3. [esp+0xC] - тип солдата) Code:
видим, что второй аргумент берется из какой-то структуры. понятно, что нужно узнать значение 32х битного регистра EAX(offset по байтам =1) и сложить с базой 0x110FC21 = 0x110fc22. адрес в секции .data, где в момент вызова будет лежать число 5 размером в один байт. однако данный структура используется еще до хрена где, т.к. после окончания пр-ва в ней будет мусор. ставим бряк по записи и всплываем на нашем обработчике событий по адресу 0x004FF4BA: Code:
вариант №2: зайти сначала. собственно зная, что для обработки нажатия будет использована WINAPI Code:
и ориентируясь ******************************************************************************** дальше способов увеличить кол-во просто солдат за один клик целый океан 1) например, для пр-ва 255 (0xFF) можно сделать так в самом обработчике: Code:
2) но чтобы избавится от ограничения в байт, логичней править непосредственно процедуру производства по адресу 0x0050488C, а именно ее второй аргумент, отвечающий за количество. 3) ... ![]() |
<< . 1 . 2 . |
![]() |
eXeL@B —› Вопросы новичков —› Проблема с бряком |