Я не знаю как правильно назвать тему, постараюсь объясните подробней, думаю знающие люди дожны понять
Уже относительно давно занимался изменением прошивки(ПО) своего телефона Sony Ericsson
Там в прошивке были строки, функции или любые другие данные, и к ним можно было обратится через адрес именуемый оффсетом, он был const+<адрес в HEX редакторе>, ну ещё байты переворачивались(тоесть адрес 44fc2bc4, а в прошике он был c42bfc44)(const это начальный адрес прошивки).
Вот если мне нужно было заменить путь к какой-то папке, и он был длинный, и вместо старого не помещался, то просто этот путь писался в конце прошивки(или в любом другом свободном месте), и просто все ссылки на старое расположение пути заменялись на новое.
Что то такое должно быть и для windows приложения, вот только как правиль это назвать я не знаю, и поэтому найти не могу.
Оффсеты
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
GanGSISoft
В Windows для перемещения файлов используется drag&drop %)
А если по теме - то что собственно нужно? Похексить можно почти всё, только зачем тебе это понадобилось (конкретнее)?
Вообще читай доки про PE (Portable Executable) - формат файлов .exe
Хотя если нужно менять значения, считаемые в рантайме можно хексить оперативу, там подругому уже)
В Windows для перемещения файлов используется drag&drop %)
А если по теме - то что собственно нужно? Похексить можно почти всё, только зачем тебе это понадобилось (конкретнее)?
Вообще читай доки про PE (Portable Executable) - формат файлов .exe
Хотя если нужно менять значения, считаемые в рантайме можно хексить оперативу, там подругому уже)
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Ну вот простейший пример, игра хранит сохранения в "c:\game" я хочк сделать в "c:\Gammmee", поэтому хочу "c:\Gammmee" дописать в конец exe файла, и все ссылки на старый путь заменить новыми.
- x_000
- Полковник
- Сообщения: 4889
- Зарегистрирован: 25.02.2008
- Откуда: Deutsches Reich
- Благодарил (а): 6 раз
- Поблагодарили: 18 раз
GanGSISoft
как как, MOZGIII все верно говорит, берешь документацию по формату РЕ, внимательно читаешь, узнаешь, как можно раздвинуть секцию данных и делаешь это
или, если повезет, то за концом строки будет еще свободное место, туда тоже можно расширять
либо оффсеты на строку ищи в дизассемблированном коде, там заменяешь на адрес любого свободного места в секции данных(которое обязательно будет, а вот прямо за строкой, для ее непосредственного расширения, может и не быть)
как как, MOZGIII все верно говорит, берешь документацию по формату РЕ, внимательно читаешь, узнаешь, как можно раздвинуть секцию данных и делаешь это
или, если повезет, то за концом строки будет еще свободное место, туда тоже можно расширять
либо оффсеты на строку ищи в дизассемблированном коде, там заменяешь на адрес любого свободного места в секции данных(которое обязательно будет, а вот прямо за строкой, для ее непосредственного расширения, может и не быть)
- SHADOW
- Полковник
- Сообщения: 4024
- Зарегистрирован: 13.05.2009
- Благодарил (а): 61 раз
- Поблагодарили: 327 раз
- Контактная информация:
GanGSISoft
Советую установить OllyDbg. Ищешь по всем модулям к данному EXE файлу текст /game/ , потом ищешь ссылки(references) к данному адресу, по которому находится текст. Если все правильно сделал, то найдешь подобное:
Ясное дело, что вместо EDI может стоять и EAX, и EBX, и другие регистры.
Затем ищешь свободное место в файле. Если нету места, то создаешь новую секцию(небольшого размера).
Вписываешь в свободное пространство нужный тебе текст(в данном случае новый путь), и меняешь адрес с выше написанного кода MOV DWORD PTR SS:[адрес],EDI на новый.
Советую установить OllyDbg. Ищешь по всем модулям к данному EXE файлу текст /game/ , потом ищешь ссылки(references) к данному адресу, по которому находится текст. Если все правильно сделал, то найдешь подобное:
Код: Выделить всё
MOV DWORD PTR SS:[адрес],EDI
Затем ищешь свободное место в файле. Если нету места, то создаешь новую секцию(небольшого размера).
Вписываешь в свободное пространство нужный тебе текст(в данном случае новый путь), и меняешь адрес с выше написанного кода MOV DWORD PTR SS:[адрес],EDI на новый.
Последний раз редактировалось SHADOW 17.09.2010, 18:25, всего редактировалось 3 раза.
- GanGSISoft
- Полковник
- Сообщения: 1430
- Зарегистрирован: 27.03.2008
- Откуда: Бацькаўшчына
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
сложно всё, нельзя ли взять адрес в HeX редакторе, а как нибудь вычислить этот оффсет, как в той же прошивке телефона?