Сейчас на форуме: morgot, sashalogout, -Sanchez- (+3 невидимых) |
eXeL@B —› Софт, инструменты —› Восстановление hints после распаковки |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
Посл.ответ | Сообщение |
|
Создано: 01 марта 2016 10:01 · Поправил: FalseMaster · Личное сообщение · #1 Некоторое время назад открыл для себя ручную распаковку исполняемых файлов. В процессе ковыряния столкнулся с тем, что некоторые пакеры заменяют адреса API'шек в IAT на переходники, и в этом случае приходится соответствующим образом редактировать файл, создаваемый тулзой "Import Reconstructor". Восстановление так называемых подсказок для загрузчика показалось мне зело муторным занятием, и после нескольких распаковок я не выдержал и накатал прожку, делающую это автоматически. Вот |
|
Создано: 10 апреля 2017 23:05 · Личное сообщение · #2 dosprog пишет: А было бы уместно глянуть. Кроме пиздежа ничего. Ноль. Так выкладывай свой убер код и увидишь, даже на нескольких языках. На этом форуме я принципиально не буду ничего выкладывать из за тотальной неадекватности существенной части комьюнити, некоторым ранг на мозг давит и им взгрустнулость, что они из себя что то представляют. Но специально для тебя сделаю эксклюзивное исключение. |
|
Создано: 10 апреля 2017 23:12 · Поправил: dosprog · Личное сообщение · #3 |
|
Создано: 10 апреля 2017 23:16 · Личное сообщение · #4 |
|
Создано: 11 апреля 2017 00:42 · Поправил: dosprog · Личное сообщение · #5 |
|
Создано: 11 апреля 2017 01:00 · Личное сообщение · #6 dosprog пишет:А нахуй ты тогда тут нужен, чуваг? И этот вопрос задай себе. 1. нативная реализация всегда быстрее jit компиляции? 2. оптимизации cl\lcc\gcc хуже делфи? 3. действительно считаешь говнокод который выкладывался в треде нормальным кодом? И тут начинает доходить, что независимо от ответов выставишь себя вниманиебл*ядью или нубом. Даже по клавишам стучать нужно обдумано. |
|
Создано: 11 апреля 2017 01:01 · Поправил: dosprog · Личное сообщение · #7 |
|
Создано: 11 апреля 2017 01:05 · Личное сообщение · #8 |
|
Создано: 11 апреля 2017 01:13 · Поправил: dosprog · Личное сообщение · #9 |
|
Создано: 11 апреля 2017 02:03 · Поправил: -=AkaBOSS=- · Личное сообщение · #10 FalseMaster пишет: Правильно ли я разумею, что если контрольная сумма "связанной" DLL'ки окажется обнулённой или неверной, то заполнение IAT будет втихаха произведено по стандартной схеме? Насколько я знаю, црц хидера на этот механизм не влияет. Проверка идёт по таймштампу компиляции. Про проверку целостности я упомянул чисто так, к слову. Имелось в виду что будет неприятно использовать подобные механизмы оптимизации, и нарваться на самописную/протекторную проверку целостности. Я видел случаи, когда авторы подобного западла не удосуживались дописывать вывод соответствующих сообщений, а просто устраивали различные ошибки в расчётах. FalseMaster пишет: разве что EditBin не сможет найти свободное место для размещения данных bound-импорта Ну если он не сможет, тогда уже и отдельную утилиту наваять можно. Кстати, CFF Explorer вроде как тоже умеет импорт связывать. Но я не уверен, что он делает это самостоятельно, а не посредством вышеупомянутого editbin |
|
Создано: 11 апреля 2017 03:53 · Личное сообщение · #11 FalseMaster >>Помнится, дохренища лет назад, когда ещё только начинал >>"познавать толк в извращениях", наткнулся на твой неистовый >>срач с ламерьём на тему дров на делфи Да уж.. Конечно, со временем пришло действительное "просветление", а собстно что в этом такого? так, дополнение, в отборную копилку, набора инструментальных средств.. Как по мне, главное чтоб это кайф доставляло (а то и адриналинчик), а не выходило в какуюто там рутину... shellstorm >>напишу скрипт делающий это же самое и который будет работать быстрее. очень интересно на чем напишете? Окей, вот для примера проджект. Автор сделал потрясающую работу по репроцессу 3д вершин, из за чего тачки в NFS5-Porche, не выглядят приплющеными на недобуке с разрешением 1024х600. Там представлен код на пилюсах и релиз бинарь, компиленый на VS2013... С дистрибутивом рантайма msvcr120.dll (который даже пришлось хачить чтоб стартанул на XP-SP2).. Однако вследствии конченой испоганености MS$ компилера, все это дико тормозило, на нетбуке с атом N435. Пришлось подключать похаченый в доль и поперек IntelC++ к дельфи (удалось отжать из него 3регистровую передачу параметров на fastcall)... Кстати, посмотрел, на нетбуке оказалась финальная реализация, с рипнутым выхопом intel C++ (c SSE оптимайзом) Вы осилите _это_ хотябы собрать? и сделать еще шустрее processVertices: shellstorm, или вы всеже твинки? |
|
Создано: 12 апреля 2017 07:53 · Личное сообщение · #12 FalseMaster >А вот о причине её привиредливости было бы неплохо узнать для общего развития. Выяснил два (пока что) условия, при которых EditBin не хочет биндить: 1) Обнулённое поле OriginalFirstThunk (адрес lookup table) в дескрипторе импорта. Но это и ежу понятно, просто я заторопился и не заметил поначалу. Насколько мне известно, дубликат IAT "забывают" создавать старые линкеры, как багландские так и мелкософтские. Кстати, очень подло ведёт себя системный загрузчик с драйвером без lookup table – в память пихает, а IAT не заполняет, сцуко. 2) Наличие цифровой подписи, точнее запись в соответствующей data directory. В общем, всё не так уж плохо, как минимум в половине случаев биндинг возможен. dosprog >подождём значит от тебя красивой реализации Вот так просто – подождём? dosprog, тут не все бессмертные -=AkaBOSS=- >…и нарваться на самописную/протекторную проверку целостности. Ага, теперь понятно. Но это редкость, один раз только с таким сталкивался. microxa >главное чтоб это кайф доставляло Вооот, в этом-то вся и соль. К сожалению большинство программерского люда наотрез отказывается понимать, что "академический" подход не всем удобен и, соответственно, недоставляющ. Мне, к примеру, жизненно необходим простор для байто**ства и высокая скорость компиляции, т.к. проект иногда пересобирается десятки раз в час, и не из-за какой-то там патологической склонности к синтаксическим ашыпкам (хотя куда ж без них), а просто потому, что в "прихожей" толкутся несколько вариантов и хоцца их поскорее опробовать, дабы выбрать наилучший (а когда он наконец выбран и находится на стадии доводки, из глубин сознания неожиданно всплывает новый концепт и всё начинается с начала ). | Сообщение посчитали полезным: dosprog |
|
Создано: 12 апреля 2017 15:37 · Поправил: microxa · Личное сообщение · #13 FalseMaster По поводу проекта, некоторая критика, все-же не лишена оснований. Тут, можно разве что пожелать, практиковать парадигму нежели класс обьектниг c фичами ХЕ3 Полученый размер крут, но вот кодес скорей напоминает .NET&KOL передрать который на D7 (а семерочка этож форева, как и хп, ), хоть и представляется возможным.. но какбы.. не слишком того стоящим мероприятием (выпил класс функций из рекордов, переделка под стандартные модули и т.п.). Хотя в этой связи скорей припомнились грабли со снятием аспра с dll, но тогда всё решила волшебная программа от PE-Kill (сильно тогда офигел, от настолько чисто снятой гадской паковки) После чего уже избегал подобных схваток с PE бинарьем... хинты вроде тоже что и релоки? p.s shellstorm извиняюсь что влез в скандал, но цель была, всеголишь напомнить, что дельфе это всетаки asm.. а в руках программирующего |
|
Создано: 13 апреля 2017 10:28 · Личное сообщение · #14 |
|
Создано: 13 апреля 2017 12:01 · Поправил: dosprog · Личное сообщение · #15 ) Каникулы да Хинт это индекс имени импортируемой функции в таблице экспорта DLL, которая экспортирует эту функцию. Тогда, зная этот индекс, загрузчику "при динамическом связывании по именам" не нужно перебирать последовательно все имена функций,экспортируемых библиотекой, - он быстро находит имя нужного экспорта по этом индексу, сравнивает строку с именем запрашиваемой функции и, если они совпадают, то импорт найден. Если хинт ошибочный (для линковки с другой версией библиотеки), тогда имя запрашиваемой функции не совпадёт с нйденным в таблице экспорта DLL по индексу-хинту, и загрузчик станет перебирать все имена в экспорте DLL, пока не найдёт запрашиваемую строку-имя функции. Или пока не закончатся эти строки - тогда он выведет сообщение "..linked to missing service ИмяБиблиотеки.dll: ИмяФункции.." и программа не старует. |
|
Создано: 13 апреля 2017 22:27 · Поправил: FalseMaster · Личное сообщение · #16 microxa >некоторая критика, все-же не лишена оснований Дело в том, что утиль весьма примитивна и вдобавок, как выяснилось по ходу обсуждения, малополезна, чтобы говорить о каком бы то ни было её развитии/поддержке. К тому же, несмотря на нападки злопыхателей, никакого индуизЬма в сурсах нет, и dosprog, которому вынь да положь логирование в файл (на мой взгляд совершенно бессмысленное), ничтоже напрягшися перепилил на свой лад. >передрать который на D7 Передирать ничего не требуется, весь стафф для компиляции >семерочка этож форева Очень не рекомендую пользоваться багландскими компилями до XE включительно. Выше ты кидал семплы с задействованием SSE. Так вот, при линковке объектника с проектом на делфях старые компили кладут болт на выравнивание сегментов, заданное при трансляции, и принудительно равняют на DWORD. К чему ведёт подсовывание SIMD инструкциями невыравненных адресов, думаю, напоминать не надо (да-да, к лишнему поводу обвинить "клятых паскальщиков" в говнокоденье). Алсо начиная с XE 8/10-байтные данные стали выравниваться правильно и появилась возможность задавать выравнивание структурам и внутри асм-блоков. Но с XE вышла крайне неприятная |
|
Создано: 14 апреля 2017 02:04 · Личное сообщение · #17 FalseMaster я толком не вьехал (и чота врядли хочу) что там с джампами было попутано, но "проблемы" невыравненых SSE, особо и небыло, а если и было- лехко можно в ручную решить, ну как пример for-переборщик волшебных значений в инструкции shufps, (можно пошаманить a1/a2) так что не надо ляля.. А вот после того как на D7 (простым жмаком энера в фаре -> dcc.exe) собрался вот этот вот шедевр сплоита(в очень хорошем смысле) по захвату удаленного управления рабочим столом win10 (хомки), c нетбука на хп... то теперь и вобще нафик чота другое --> rdpwrap <-- вот это, даже не кулхак.. это нечто илитарное.. p.s благоговею пред автором кодеса, но чота не горю желанием знать шо там за фигня происходит, при помощи WriteProcessMemory в раковую slc.dll |
|
Создано: 14 апреля 2017 06:04 · Поправил: FalseMaster · Личное сообщение · #18 microxa >"проблемы" невыравненых SSE, особо и небыло >кулкаковый for-переборщик Ну вот, пожалуйста, о чём я и говорил (без подгонки посредством переменных-пустышек, т.к. в реальном проекте с сотнями 16-байтных переменных, раскиданных по юнитам, за**ёшься ляжкой дрыгать с такими финтами): А теперь меняем Code:
на Code:
и всё в ажуре: Только на старых делфях такой номер не прокатит и любой сишный компиль тебя уделает, да не просто уделает, а порвёт на мельчайшие кусочки, ибо MOVAPS в отличие от MOVUPS генерит исключение от корявых адресов. |
|
Создано: 14 апреля 2017 12:22 · Поправил: microxa · Личное сообщение · #19 ой ну прям пиcец с этим алигном: помню после распаковки delphi7.zip вдруг оказалось что там нету маленькой програмулины, с веселой такой трекерской музычкой. пришлось дорабатать, чтоб не парил меня этот регистри.асалям Code:
другой биг траблой, при локализациях форм, оказался не нужный ни разу вобще, кракозябровый utf8 в строках. тоже пришлось решить, чтоб в нормальном ascii win1251 оно было (как у D4, ага) Code:
так то ide мелкая, инсталла не просит. 64метра хватает на всё(с).. чтоб менять на какоето ояебушеще.. а тут да... на {$ALIGN 16} >>test.dpr(3) Error: Invalid compiler directive: 'ALIGN' ну шож, занесем в список тодо всех этих крякми |
|
Создано: 15 апреля 2017 11:32 · Поправил: FalseMaster · Личное сообщение · #20 >ой ну прям пиcец с этим алигном: >--> DELPHI+SSE - большая проблема <-- Да не, ну понятно, что эта недостающая фича легко обходится самостоятельным выделением памяти через VirtualAlloc (ни в коем случае не HeapAlloc'ом), но ведь как ни крути, это существенная прореха в функционале. >помню после распаковки delphi7.zip вдруг оказалось… А я уж и не помню. Так давно это было. >не нужный ни разу вобще, кракозябровый utf8 >так то ide мелкая, инсталла не просит. 64метра У меня она почему-то за сотню весит, но это с хелпом. >какоето ояебушеще.. Ну зря ты так. Всё чинно, благородно. |
|
Создано: 15 апреля 2017 12:29 · Поправил: microxa · Личное сообщение · #21 >>Да не, ну понятно, что эта недостающая фича легко обходится самостоятельным >>выделением памяти через VirtualAlloc (ни в коем случае не HeapAlloc'ом), >>но ведь как ни крути, это существенная прореха в функционале. ой мляяя... ну вот что ты опять гонишь а? и кому... В этой связи мне припоминается одно ресурсоемкое приложение FL-Studio, хаченое/паченое не то что вдоль и поперек. а даже пересобраное в exe, (по крайней мере 6-рка, нормально перегонялась в OBJ через dll2lib), и переделаные из dll в exe тоже.. (ну фан. всетоки лампочки светодиодики там, синтезаторы, крутилочки... циферки зеленые, бубны, ситары и таблами для медитаций). Да и в общем представляет собой шедевр коденый на дельфи.. (как техно-маг, черпаю вдохновение на новые техники, не ток в программайзе но и по электронным артефактам). И как то да, хучу в целях оптимайза и кастоминга, аццкий кусок функционалити редирекчу->GetMem на свою прикладуху с консольным writeln мониторингом (не хватило меня на цвета, да). И прикладуха то тормозит то валицо. как оказалось из за того что движок юзал FastMM... Ну и какие проблемы то? запилил на семерку, (getmem, перепилил от D2007 -ой чтоли, даже идут неспешные переработки и тесты, замены копирования через fpu/mmx/sse/sse2).. С этим просто отлично, поэтому про этот алигн чота даже не загонялся... тем более в старенький фрютилупс, вполне полным ходом шёл внедреж оптимайзеных фунок (замест fpu-шных) из новых жиртрестовых студий както так, да: зы какое то время, сидел на 'более-новом' dcc32 от d2007 (version 18.5), ну да, казалось вау фичи, перегрузка операторов, инлайны .. казалось то казалось, да только не слишком полезным оказалось... точней слишком бесполезным.. |
|
Создано: 16 апреля 2017 04:32 · Поправил: FalseMaster · Личное сообщение · #22 >getmem, перепилил от D2007 -ой чтоли, >С этим просто отлично, поэтому про этот алигн чота даже не загонялся… Так за тебя в Борланде "загнались" (строки из System.pas от Delphi 2006): Code:
Хотя конечно такой "загон" напоминает русскую рулетку. >както так, да: А если функа вызывается по условию и вершина стёка имеет зависимость от выполненного кода? Да что мы зациклились на выравнивании? Ведь помимо него появились и другие плюшки. Например юникодные строки теперь можно оформлять как обычные, а не в виде массива символов. Алиасы применимы не только для импортируемых из внешних либ апишек, но и для функций в подключаемых объектниках. Ешё говорят, что DCC подружился с COFF, правда я сам пока не пробовал, всё руки никак не дойдут. >какое то время, сидел на 'более-новом' dcc32 от d2007 (version 18.5) Я как раз эту версию эксплуатировал долгие годы… собственно на XE'шную-то не так давно переполз. Очень не хотелось расставаться, да и патчить заново жуть как ломало, но таки не устоял перед соблазном, о чём нисколько не жалею. |
|
Создано: 17 апреля 2017 01:36 · Поправил: dosprog · Личное сообщение · #23 |
|
Создано: 17 апреля 2017 20:00 · Личное сообщение · #24 |
|
Создано: 17 апреля 2017 22:51 · Поправил: dosprog · Личное сообщение · #25 Я это к тому, что в делфи теперь можно использовать кириллицу в именах переменных? Как-то неожиданно. Это так, к слову - вспомнился старинный прикол с кириллицей в именах переменных: |
|
Создано: 19 апреля 2017 17:55 · Поправил: FalseMaster · Личное сообщение · #26 |
|
Создано: 22 апреля 2017 15:47 · Личное сообщение · #27 |
|
Создано: 22 апреля 2017 16:43 · Поправил: dosprog · Личное сообщение · #28 |
|
Создано: 22 апреля 2017 16:47 · Личное сообщение · #29 |
|
Создано: 22 апреля 2017 17:21 · Личное сообщение · #30 |
|
Создано: 22 апреля 2017 17:27 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
eXeL@B —› Софт, инструменты —› Восстановление hints после распаковки |