Сейчас на форуме: igorcauret (+7 невидимых) |
eXeL@B —› Вопросы новичков —› MediaCoder 0.8.33.5680 - размер массива задан жёстко, как увеличить? работа с сегментами |
Посл.ответ | Сообщение |
|
Создано: 28 декабря 2014 14:38 · Поправил: Telo · Личное сообщение · #1 Привет, оставил запрос на взлом программы https://exelab.ru/f/action=vthread&forum=2&topic=23172&page=5#18 Тем временем пытаюсь взломать сам. 1. MediaCoder 0.8.33.5680 2. известный кодировщик/перекодировщик видео/аудио 3. x86 http://www.mediacoderhq.com/mirrors.html?file=MediaCoder-0.8.33.5680.exe x64 http://www.mediacoderhq.com/mirrors.html?file=MediaCoder-x64-0.8.33.5680.exe только исполняемый файл x86 http://rghost.ru/60018831 4. ~70mb 5. 6. Не получается добавить в очередь больше 60 файлов, предлагает купить полную версию. Для тестов просто дрэг энд дропайте видео-файлы на окно программы. Когда будет больше 60 вылетит наг. У меня нет опыта, но установил IDA Pro и начал копать x86 версию, т.к. HexRays не работает под x64, хотя она предпочтительнее. 1. Табличка MediaCoder is a freeware...нельзя добавить больше 60 файлов. Появляется по адресу 00421918 2. По адресам 00421810 и 00451DF2 нашёл сравнение cmp eax, 3Ch - это как раз проверка на >60 файлов. Замена 3C на большее значение (7D) помогает добавить в список немного больше файлов! но, увы, автор сделал ограничение ещё в другом месте, которое я не могу поправить. 3. Другое место, это адрес 004522F2 в котором, похоже, ищется свободное место в ListView. Посмотрите скрин Максимальная длина 6820h а размер одного элемента 188h. Если поделить, то получим 68 элементов - это как раз то число, больше которого файлы не добавляются, не смотря на исправления, сделанные в пункте 2. Я пытаюсь поправить 6820h на бОльшее значение, добавляется еще 1-2 файла, но потом, похоже, происходит переполнение массива и программа крэшится. мне дали совет: Если при увеличении значения программа крешится, то скорей всего место под массив зарезервировано в сегменте данных. Чтобы обойти это ограничение, нужно добавить сегмент и перенаправить все обращения к оригинальному массиву в этот сегмент. И затем уже поправить константы. адрес массива этот в сегменте .data есть запись про этот массив, но не указана длина. Как добавить другой массив в сегмент и указать его длину? работаю в IDA Pro там есть работа с сегментами жму Create segment, в окне необходимо внести начало и конец создаваемого сегмента, но как мне найти дырку нужной длины, чтобы ничем другим не была занята? размер приличный нужен на 1000 элементов по 188h каждый это нужно 392000 байт |
|
Создано: 28 декабря 2014 19:41 · Личное сообщение · #2 Telo пишет: жму Create segment, в окне необходимо внести начало и конец создаваемого сегмента, но как мне найти дырку нужной длины, чтобы ничем другим не была занята? размер приличный нужен на 1000 элементов по 188h каждый это нужно Скачай PeTools и создай новую секцию, хоть на гигабайт и используй её как "дырку". | Сообщение посчитали полезным: Telo |
|
Создано: 28 декабря 2014 19:54 · Личное сообщение · #3 |
|
Создано: 28 декабря 2014 19:54 · Личное сообщение · #4 |
|
Создано: 28 декабря 2014 19:56 · Личное сообщение · #5 |
|
Создано: 28 декабря 2014 19:59 · Личное сообщение · #6 |
|
Создано: 28 декабря 2014 20:01 · Личное сообщение · #7 |
|
Создано: 28 декабря 2014 20:01 · Личное сообщение · #8 Telo пока начните с простого, создайте секцию и нужно поправить в программе все упоминания адреса на старый массив. Возможны обращения к этому массиву из других частей программы reversecode ну поправит по хрефам адреса ----- [nice coder and reverser] | Сообщение посчитали полезным: Telo |
|
Создано: 28 декабря 2014 20:05 · Поправил: Telo · Личное сообщение · #9 reversecode пишет: релоков (рефов) на этот массив, там не один, нужно разбирать прогу и искать все референсы в IDA Pro я посмотрел xrefs на этот массив - только один.. в указанном на скринах месте. больше нигде ссылок на этот массив нет. Добавлено спустя 2 минуты проверял x-refы в IDA таким образом Добавлено спустя 11 минут создаю секцию размером 392000 байт, это 1000 элементов длиной 188h характеристики созданной секции |
|
Создано: 28 декабря 2014 20:27 · Личное сообщение · #10 Hellspawn пишет: ну поправит по хрефам адреса не поправит, там стат масив и он зацеплен за другие структуры которые тянуться намного раньше Telo пишет: в IDA Pro я посмотрел xrefs на этот массив - только один.. в указанном на скринах месте. больше нигде ссылок на этот массив нет. да да вот дураки программисты оставили вам один static FILES array[60]; что бы вы перебили один релок и было счастье ну ну, а не будет |
|
Создано: 28 декабря 2014 20:49 · Поправил: Telo · Личное сообщение · #11 |
|
Создано: 28 декабря 2014 20:58 · Поправил: Alf · Личное сообщение · #12 |
|
Создано: 28 декабря 2014 21:00 · Личное сообщение · #13 |
|
Создано: 28 декабря 2014 21:06 · Личное сообщение · #14 |
|
Создано: 28 декабря 2014 21:07 · Поправил: Telo · Личное сообщение · #15 |
|
Создано: 28 декабря 2014 21:08 · Поправил: reversecode · Личное сообщение · #16 |
|
Создано: 28 декабря 2014 21:10 · Личное сообщение · #17 reversecode ну мне тоже было интересно что это за странная проверка. Но просто по логике там было так, что при добавлении файла прога заходит в это место, которое я пытался фиксить и если выходит за 68й элемент (это как раз размер массива, что я пытался увеличить), то эта subroutine возвращает eax равный 0 и файлы не добавляются. А если еще нет 68 элементов, то EAX возвращался явно похожим на адрес для нового элемента как раз в пределах того массива, что я пытался переделать. ну что это за проверка test [eax], 0x80000 я тоже не понял |
|
Создано: 29 декабря 2014 02:20 · Личное сообщение · #18 потому что Code:
|
|
Создано: 29 декабря 2014 21:09 · Личное сообщение · #19 |
|
Создано: 29 декабря 2014 21:10 · Личное сообщение · #20 |
eXeL@B —› Вопросы новичков —› MediaCoder 0.8.33.5680 - размер массива задан жёстко, как увеличить? работа с сегментами |