| eXeL@B —› Вопросы новичков —› изменение размера статического массива в exe файле | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 18 июля 2009 01:18 · Поправил: vereteran  · Личное сообщение · #1 доброго времени суток. есть программа Ventrilo (http://www.ventrilo.com/) для голосового общения. бесплатно распространяется версия с ограничением на 8 человек максимум (т.е. одновременно могут подключиться к такому серверу не более 8-ми человек). я пытаюсь это ограничение убрать. половину дела я сделал, хоть и немного топорно: убрать ветвление на дисконнект 9-го пользователя с сообщением о забитости сервера (dif file by IDA 5.2): ventrilo_srv.exe 0000BFB1: 0F E9 0000BFB2: 8E 61 0000BFB3: 60 01 0000BFB4: 01 00 0000BFB6: 00 90 убрать физический лимит сервера на 9 человек (dif file by IDA 5.2): ventrilo_srv.exe 0001ADCF: 0F E9 0001ADD0: 8C C3 0001ADD1: C2 00 0001ADD4: 00 90 0001AE9A: 72 EB ventrilo_srv.exe 0001AEEE: 73 90 0001AEEF: 0D 90 сделано слегка топорно, т.к. все вместо каких-то новых значений были заменены инструкции jl/jg/jle/jbe/... на jmp куда нужно, а там где переход нежелателен - воткнуты nop. вот теперь начинается самое весёлое: всё бы хорошо, но не тут-то было. после всего этого на 10-м клиенте софтина валится. ковыряния в IDA показали: существует статический int массив, он не расширяется при новых соединениях и на 10-м клиенте программа просто вылетает с ошибкой доступа к памяти на write. насколько я понимаю, единственный способ это исправить - перенести этот массив в конец секции .data, увеличить, после чего переписать все адреса старого массива на новый. вот только как это сделать я понятия не имею   помогите пожалуйста.P.S. это мой первый взлом. я видел запрос на взлом этой программы, но мне бы хотелось сделать это самостоятельно. ![]()  | 
| 
 | 
Создано: 18 июля 2009 01:45  · Личное сообщение · #2 в данной ситуации помимо описанного тобой способа, есть другой вариант: создаёшь свою длл, которая: * создаёт свой динамический массив нужного размера * хукает обращение к исходному массиву (лучше всего на начальном этапе) и подменяет его своим как это реализовать технически: * обходишь не сравнение, а само максимальное число соединений * находишь указатель на массив и прописываешь туда адрес своего массива * добавляешь в импорт свою длл * при загрузке твоя длл делает всю работу по патчу и подмене значений ----- EnJoy! ![]()  | 
| 
 | 
Создано: 18 июля 2009 01:55 · Поправил: vereteran  · Личное сообщение · #3 по дллке мысль была, но нехотелось бы налепливать много чего "сбоку". хочется реализовать именно вышеописанный способ, т.к. это именно модификация исполняемого файла. + к тому в софтине кол-во соединений захардкодено (cmp eax, 9 - как такое обойти?). P.S. если быть честным, то первая причина скорее желание приобщиться к ассемблеру и взлому  
![]()  | 
| 
 | 
Создано: 18 июля 2009 02:09  · Личное сообщение · #4  | 
| 
 | 
Создано: 18 июля 2009 02:18  · Личное сообщение · #5  | 
| 
 | 
Создано: 18 июля 2009 09:22  · Личное сообщение · #6  | 
| 
 | 
Создано: 18 июля 2009 14:02  · Личное сообщение · #7  | 
| 
 | 
Создано: 18 июля 2009 17:44  · Личное сообщение · #8  | 
| 
 | 
Создано: 18 июля 2009 18:58 · Поправил: coolangel  · Личное сообщение · #9 vereteran пишет: чем и как пропатчить несколько сотен вхождений адреса старого массива на новое значение? Решение "в лоб" - Скриптом в Ольке собираешь лог всех обращений,хорошенько погоняв программу. А далее, либо вручную патчишь, либо пишешь патчер,который на основании лога пропатчит файл так, как тебе надо. ![]()  | 
| 
 | 
Создано: 18 июля 2009 19:32  · Личное сообщение · #10 vereteran пишет: в конце концов ни одной умной мысли _как_? а.... вот оно что... т.е. тебе тут тока неумные мысли выдавали... видимо, для тебя умная мысль - это когда всё делают за тебя, а ты НИ ОДНОГО (!!!) предложенного решения не опробовал реализовать САМОСТОЯТЕЛЬНО vereteran пишет: P.S. если быть честным, то первая причина скорее желание приобщиться к ассемблеру и взлому в таком случае ты БЕСТОЛКОВЫЙ ученик, которой ни хрена не делает сам, а только ждёт указки. учись учиться, раз ты такой ----- EnJoy! ![]()  | 
| 
 | 
Создано: 18 июля 2009 21:20  · Личное сообщение · #11 Jupiter пишет: а.... вот оно что... т.е. тебе тут тока неумные мысли выдавали... говорить - не мешки ворочать. голая теория бесполезна. Jupiter пишет: видимо, для тебя умная мысль - это когда всё делают за тебя, а ты НИ ОДНОГО (!!!) предложенного решения не опробовал реализовать САМОСТОЯТЕЛЬНО опробовал, свалилось. нашёл почему. исправил, свалилось уже в другом месте, 5-й час страдаю. Jupiter пишет: в таком случае ты БЕСТОЛКОВЫЙ ученик, которой ни хрена не делает сам, а только ждёт указки. учись учиться, раз ты такой какой учитель... ![]()  | 
| 
 | 
Создано: 19 июля 2009 00:50  · Личное сообщение · #12  | 
| 
 | 
Создано: 19 июля 2009 01:17  · Личное сообщение · #13  | 
| 
 | 
Создано: 19 июля 2009 10:36  · Личное сообщение · #14  | 
| eXeL@B —› Вопросы новичков —› изменение размера статического массива в exe файле | 
| Эта тема закрыта. Ответы больше не принимаются. | 

 помогите пожалуйста.







 Для печати