Сейчас на форуме: Lohmaty (+6 невидимых) |
eXeL@B —› Вопросы новичков —› Воскресенье, вечер, тупняк и RVA адрес в dll |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 12 августа 2018 23:42 · Личное сообщение · #1 Тут RAW = RVA = 0x1B286 Но "калькуляторы" упорно выдают 0x15C86 Я в целом не против, кто я такой, чтобы им указывать и "изысканиями" заниматься сегодня уже нет настроения, но все же лыжи не едут, или? | Сообщение посчитали полезным: SDK |
|
Создано: 12 августа 2018 23:59 · Личное сообщение · #2 у меня у самого тут нечто - скачал айтунс запускаю C:\Downloads\iTunesSetup.exe не является приложением win32 это SFXcab архив выдернул из него потраха то же самое знаю что win 32 и не битый не пойму мож я тоже в "луже и в лыжах" в атаче установщик подскажите чё он под xp Не идёт? b44c_13.08.2018_EXELAB.rU.tgz - SetupAdmin.exe |
|
Создано: 13 августа 2018 00:28 · Поправил: ClockMan · Личное сообщение · #3 VOLKOFF пишет: Но "калькуляторы" упорно выдают 0x15C86 да ты чё грёбанные калькуляторы возомнили себя богами и ещё какую то ересь несут про RVA и FО ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: Jaa |
|
Создано: 13 августа 2018 00:38 · Поправил: hypn0 · Личное сообщение · #4 VOLKOFF пишет: Но "калькуляторы" упорно выдают 0x15C86 Ну ведь правильно выдают. 0x1b286 (твой виртуальный адрес) - 0x1b000 (виртуальный адрес секции) + 0x15a00 (физический адрес секции) = 0x15с86 Добавлено спустя 8 минут SDK пишет: подскажите чё он под xp Не идёт? OS Version и Subsystem version в заголовке поменяй с 06 на 05. В байтах от начала файла 0x148 и 0x150. Может и заработает. Но вообще если не идет, то значит и не должен. Ищи версию под XP. | Сообщение посчитали полезным: sefkrd |
|
Создано: 13 августа 2018 01:33 · Личное сообщение · #5 hypn0 пишет: Ну ведь правильно выдают Ну какбы не совсем. Если открыть файл любым hex редактором и перейти по 0x1B286 мы попадем на нужные последние байты файла, между тем по "правильному" 0x15C86 совсем "не то пальто". Прикол в том, что в конце файла прилеплен сертификат, что при просчете не учитывается и с одной стороны по всем признакам это вроде как часть файла, но по сути - чужеродная фигня сбоку. Надо костыль написать под такие кейсы |
|
Создано: 13 августа 2018 05:54 · Поправил: dosprog · Личное сообщение · #6 |
|
Создано: 13 августа 2018 06:48 · Поправил: f13nd · Личное сообщение · #7 Code:
Добрый человек, скажи пожалуйста, как RVA у тебя получилось равным RAW? 1B000+286=1B286 и 15A00+286=15C86. Калькуляторы упорно выдают тебе правильное значение RVA=1B286 для RAW=0x15C86 (может тебя ввело в заблуждение что это релоки?) ClockMan пишет: грёбанные калькуляторы возомнили себя богами и ещё какую то ересь несут про RVA и FО мировой заговор калькуляторомасонов, не меньше VOLKOFF пишет: Если открыть файл любым hex редактором и перейти по 0x1B286 мы попадем на нужные последние байты файла, между тем по "правильному" 0x15C86 совсем "не то пальто". Прикол в том, что в конце файла прилеплен сертификат, что при просчете не учитывается и с одной стороны по всем признакам это вроде как часть файла, но по сути - чужеродная фигня сбоку. Надо костыль написать под такие кейсы Никакой костыль там не нужен. При анализе файла создается список виртуальных и реальных областей, калькулятор берет смещение от базы той области, куда попадает введенный тобой адрес и прибавляет к другой базе этой же области. Сертификат/зип архив в sfx/поэма Гомэра Илиада, дописанные в конец файла, никак не влияют на рассчет RVA/VA/RAW. Что по смещению 1B286 ты куда-то там попал, ну шара залетела значит, повезло. Никакой закономерности тут нет, да, это чужеродные данные, которые даже не загружаются в память при загрузке длл. ----- 2 оттенка серого | Сообщение посчитали полезным: ClockMan |
|
Создано: 13 августа 2018 11:22 · Личное сообщение · #8 VOLKOFF пишет: Если открыть файл любым hex редактором и перейти по 0x1B286 мы попадем на нужные последние байты файла, между тем по "правильному" 0x15C86 совсем "не то пальто". О чём спор? Попробую попроще объяснить. Там же явно на картинке 0x15C86 - File Offset, смещение в файле до маппинга. Это не то же самое, что RVA. Маппинг секции файла со смещения 0x15A00 при загрузке dll идёт в памяти по адресу 0x1B000 VOLKOFF пишет: Тут RAW = RVA = 0x1B286 RAW совсем не обязано быть равно RVA! ----- IZ.RU |
|
Создано: 13 августа 2018 16:55 · Поправил: VOLKOFF · Личное сообщение · #9 Эх, хорошо что сегодня понедельник, а не завтра, как вчера... dosprog пишет: Да всё там правильно Для меня "правильно" не когда все сделано по правилам, а когда есть нужный результат f13nd,DenCoder Сертификаты адресуется не по RVA, а по файловым смещениям (тк не грузятся в память, существуя только на диске). Канонический подход заключается в прокрутке цикла NumberOfSections, выравниванию размеров (по необходимости) и проверке попал ли адрес в диапазон. Для оверлеев такая схема не будет работать. Можешь вставить сырой оффсет (1B286) оверлея в любой калькулятор и он тебе покажет 'Out of file' в RVA, что очевидно. Поэтому я перестал заниматься "канонизмом" и запилил фикс, учитывающий подобные кейсы, проблема решена. На этом какбы и все Нафига это все? Наткнулся на сабж случайно, когда увидел ошибки в выхлопе своего кода (он считал такой же оффсет, как калькуляторы и плевался на несовпадение значений по этому смещению). Как самый примитивный "живой" пример: патч оверлея > дифф любой тулзой с RVA адресацией (да, это достаточно распостранено и даже VA бывает в редких случаях удобнее, если ASLR нет, многие знают толк в извращениях, но не признаются Хотя с другой стороны не было бы тогда выбора VA|RVA адресации в популярных тулзах ). В итоге любой патчер по такому диффу запатчит мимо, или ругнется, т.к. адрес посчитает "по классике". Тему оставлю ради дальнейших бесценных комментов Инде. Всем Добра! |
|
Создано: 13 августа 2018 18:56 · Личное сообщение · #10 VOLKOFF пишет: Для оверлеев такая схема не будет работать. Правильно. Она и не должна работать, потому что оверлей, это просто данные, которые "приклеели" к ехе-файлу. Следовательно если нужно работать с оверлеем, то нужно просто найти его начало (физический адрес последней секции + физический размер этой секции) и попадаем ровно на начало оверлея. Обратиться к нему через RVA и не получится. VOLKOFF пишет: Как самый примитивный "живой" пример: патч оверлея > дифф любой тулзой с RVA адресацией Я всё-таки не понимаю, почему нельзя "вручную" определить начало оверлея? Это же очень просто. Берем таблицу секций, ищем последнюю и выше написал как считаем. Хотя знаю случай когда такой метод не сработает. У микрософтовских обновлений для WinXP часто стоит некорректный физический размер (значения размером с сам файл) последней секции. Для этого можно взять виртуальный размер секции. Правда при этом попадём на паддинг, но его не сложно пропустить. |
|
Создано: 13 августа 2018 20:25 · Личное сообщение · #11 VOLKOFF К слову, Скачать: ----- EnJoy! | Сообщение посчитали полезным: VOLKOFF |
|
Создано: 13 августа 2018 20:40 · Личное сообщение · #12 Jupiter пишет: К слову, File Location Calculator от ManHunter / PCL определяет корректно О, прикольно, у меня на скрине версия 1.0, оказывается обновка есть Только он выдает ровно тоже. Тут действительно "специфический" случай и универсально это зафиксить в отрыве от контекста имхо труднорешаемая задача. В моем коде есть возможность валидации входящих данных, поэтому залатать удалось, а в стэндэлон калькуляторе хз, тут без магии не обойтись |
|
Создано: 13 августа 2018 20:54 · Личное сообщение · #13 VOLKOFF пишет: Только он выдает ровно тоже File Location Calculator от ManHunter показывает абсолютно корректное значение. Возможно, тебе нужна инструкция по тому, как его использовать? 1. Запустил "flc.exe" 2. Кинул твой файл "d3dhook.dll" в окно File Location Calculator 3. Выбрал "File Offset:" 4. Вставил в поле справа от "File Offset:" твоё значение: 1B286 5. Нажал "Calculate" 6. Получил в поле "PE section name" значение "Overlay" и в поле "Hex Data" данные "58 ED". ----- EnJoy! |
|
Создано: 13 августа 2018 21:02 · Личное сообщение · #14 |
|
Создано: 13 августа 2018 21:13 · Личное сообщение · #15 Jupiter пишет: 3. Выбрал "File Offset:" Детектить оверлей по RAW это конечно хорошо и просто, но только это значение нужно вставлять в RVA поле Об этом в первом посте и речь. f13nd пишет: проще, чем сделать патчер, работающий с файловыми смещениями Хороший патчер должен уметь покрывать все потенциально возможные кейсы. Патчить только по RAW много ума не надо, такого добра навалом везде... |
|
Создано: 13 августа 2018 21:23 · Личное сообщение · #16 VOLKOFF пишет: Детектить оверлей по RAW это конечно хорошо и просто Это не "хорошо и просто", а единственно возможный вариант, поскольку никаких RVA для overlay не существует. Overlay по определению находится за границами виртуальных адресов. Я то думал, ты прогой не умеешь пользоваться, а ты вообще матчасть не знаешь. ----- EnJoy! |
|
Создано: 13 августа 2018 21:35 · Поправил: VOLKOFF · Личное сообщение · #17 Jupiter пишет: никаких RVA для overlay не существует Спорно. Это оверлея в замапленом (SEC_IMAGE) образе не существует, а именно при таком маппинге конвертируются адреса. Однако это совсем не значит, что нельзя получить "псевдо RVA" адрес оверлея и среди прочих "валидных" его определить и использовать впоследствии на полном маппинге файла (или образе на диске). Я уже говорил, крайне специфический кейс с определенной долей здорового "извращенчества", но ничего сверхестественного |
|
Создано: 13 августа 2018 22:32 · Личное сообщение · #18 |
|
Создано: 14 августа 2018 00:19 · Личное сообщение · #19 VOLKOFF пишет: Спорно Видя всё, что ты пишешь, очевидно, что у тебя каша в голове в части понимания понятия "overlay". Ты попробуй для себя сформулировать, что такое "overlay", как ты это понимаешь. Такое ощущение, что у тебя какое-то личное, своё, отличное от других понимание термина "overlay". И в твоём понимании у "overlay" есть не только файловое смещение, но и относительный виртуальный адрес. ----- EnJoy! |
|
Создано: 14 августа 2018 01:04 · Личное сообщение · #20 |
|
Создано: 14 августа 2018 01:15 · Личное сообщение · #21 |
|
Создано: 14 августа 2018 06:11 · Поправил: hypn0 · Личное сообщение · #22 VOLKOFF пишет: Независимо от твоего ощущения, мой код не становится менее рабочим Ну дай то Бог... В верхнем посте ни про какой оверлей речь не шла. Там RVA 1b286 находится в секции релоков, прога так и говорит. Для проверки, на скриншоте есть hex-дата. Можно поискать. А вот если перейти в файле по физическому адресу 1b286, то попадаем на два последних байта оверлея. Видимо в адресах запутался, так как похоже тут реально "смешались в кучу кони, люди..." | Сообщение посчитали полезным: ClockMan |
|
Создано: 14 августа 2018 14:18 · Личное сообщение · #23 |
|
Создано: 14 августа 2018 17:01 · Личное сообщение · #24 |
|
Создано: 15 августа 2018 05:40 · Поправил: dosprog · Личное сообщение · #25 VOLKOFF пишет: Спорно. Это оверлея в замапленом (SEC_IMAGE) образе не существует, а именно при таком маппинге конвертируются адреса. Однако это совсем не значит, что нельзя получить "псевдо RVA" адрес оверлея Нельзя. Потому что для этого нужно было бы иметь "псевдо RVA" его начала в таблице объектов PE. А его там нет. Jupiter пишет: Overlay по определению находится за границами виртуальных адресов. [это больше для VOLKOFF'а] Сам термин "оверлей" переводится как "перекрытие". Появился он для MZ файлов DOS, когда была изобретена подгрузка и исполнение кода в оверлейном буфере для преодоления нехватки оперативной памяти. Но этим занимался код самого MZ-EXE файла. Системе ничего не было известно о содержимом неучтённого куска данных, дописанных в конец файла MZ-EXE. И этот код даже не загружался в память при запуске MZ. То же самое происходит и с PE-EXE. |
|
Создано: 16 августа 2018 04:47 · Личное сообщение · #26 |
|
Создано: 16 августа 2018 16:24 · Личное сообщение · #27 mdscorp Топикстартер даже на ----- EnJoy! |
|
Создано: 16 августа 2018 16:37 · Личное сообщение · #28 |
|
Создано: 16 августа 2018 17:35 · Личное сообщение · #29 |
|
Создано: 16 августа 2018 21:32 · Личное сообщение · #30 Немного странно видеть такое агрессивное поведение модератора в исчерпавшем себя топике и преследующем уже какие-то свои цели (кому-то доказать что "топикстартер не прав"? ). Я не понимаю твоего намерения и считаю странным "обязанность" отвечать на неинтересный мне вопрос, ответ на который есть в первом посте и далее. Можете до посинения тут копья ломать и "топикстартера гнобить", я совсем не против, значит вы просто не поняли о чем на самом деле было это кино |
. 1 . 2 . >> |
eXeL@B —› Вопросы новичков —› Воскресенье, вечер, тупняк и RVA адрес в dll |
Эта тема закрыта. Ответы больше не принимаются. |