У меня похоже не работает (пишет SORRY на любом exe). В своем собственном файле, утилита нечто находит по адресу: 00000A8C Проверенные версии link.exe: 5.12.8078, 7.10.3077, 7.10.6030, 8.00.50727.762 Тестовый exe в аттаче.
ALLeX на уже пропатченных может не работать, и естественно его нужно на link.exe натравливать, если найдет то найдет file offset (Alt-F1 в hiew -> F5 -> .найденный_offset -> сравнить визуально с приложенной докой и пропатчить нужное)
Если кому еще интересно насчет констант, зашитых в линкер, то... это всего лишь номер билда конкретного линкера! Напимер: bogrus писал: А число 9DEA - не что иное как 40426! И так далее.
Покопал для линкера 8.00.50727.42 AMD64 (PE64), который из студии (64битный бинарь). Итого: смещение 8157А, заменить 93 на 8В. Особо не тестил, но сигнатуры нет. код: Код (Text): .text:0000000000482168 E8 83 BC FF FF call ?CbBuildProdidBlock@IMAGE@@AEAAKPEAPEAX@Z ; IMAGE::CbBuildProdidBlock(void * *) .text:000000000048216D 8B E8 mov ebp, eax .text:000000000048216F 8B 8B E0 02 00 00 mov ecx, [rbx+2E0h] .text:0000000000482175 8D 54 0D 00 lea edx, [rbp+rcx+0] .text:0000000000482179 89 93 E4 02 00 00 mov [rbx+2E4h], edx .text:000000000048217F FF 15 C3 F4 F7 FF call cs:__imp__tzset .text:0000000000482185 80 3D 0C 81 05 00+ cmp cs:?fReproducible@@3_NA, 0 ; bool fReproducible Для версии IA64 (PE32) 8.00.50727.198 (из ДДК): файловое смещение 6A284, заменить 03 97 на 90 90. Код (Text): .text:0046AE77 E8 64 A1 FF FF call sub_464FE0 .text:0046AE7C 8B 95 5C 02 00 00 mov edx, [ebp+25Ch] .text:0046AE82 8B F8 mov edi, eax .text:0046AE84 03 D7 add edx, edi .text:0046AE86 89 95 60 02 00 00 mov [ebp+260h], edx .text:0046AE8C FF 15 40 13 40 00 call ds:_tzset С остальными версиями (кроме IA64 (PE64) ) SignFinder сам справляется.
У меня практический вопрос. Зачем патчить link.exe, если можно прописать в post-build вызов какой-нибудь утилиты, которая заменит stub на любой нужный нам? Например бесплатная http://www.hiew.ru/files/dexem153.zip с этим вроде справляется.
n0name Это с какой стороны посмотреть. У меня в системе link.exe 5 штук - 2 в wdk и 3 в VS. При этом для VS2008 SignFinder ничего не находит. Нашел в файле _tzset, но алгоритм уже какой-то другой, ну не хакер я... Ну ладно, допустим пропатчу, а с установкой сервис пака проблем не будет? Или придется сначало устанавливать оригинальные версии link.exe? И еще смущает фраза А если какая-то ошибка всплывет. Этож пипец, ищешь ее в своем коде, а она в линкере. А для вставки в проект вызова утили нужно просто copy+paste.
Ну и что, у меня 7 штук только у масма, не считая других дистрибутивов. Все пропатчены. Если неохота самому патчить, попроси кого-нить, пусть напишут патчер с учётом всех версий. Конечно, можешь просто заменять заглушку, если так больше нравится. Вряд ли. Код у линкера однозначный и если результатом патча является исчезновение печати, а бинарик вполне корректный, то вероятность скрытой ошибки небольшая. Тем более, за столько времени ещё ничего не всплыло
Небольшое добавление на тему о dexem.exe. Он в принципе отказывается вставлять стаб меньше чем 80 байт. А если при замене стаба секции сместятся к началу файла, то не будет доступна отладочная информация (по-умолчанию она создается даже в релизе). И 64 бита не поддерживает. И контрольную сумму не обновляет. Вот такие ограничения. Никто не разбирался, как линкер из VS2008 изменить?
Проверил для VS2008 professional rtm: link.exe / x86 и x86_amd64 / 9.00.21022.08 / 790008 bytes 0006A20F: 03 C8 --> 90 90 link.exe / amd64 / 9.00.21022.08 / 1045496 bytes 00078204: 89 93 EC 02 00 00 --> 89 8B EC 02 00 00 64-битную версию не проверял, т.к. винды подходящей нету.
Держите патчик, чтоб каждый раз руками не лазать в линкере. Спасибо CoolCmd за инфу. http://slil.ru/25498983 - vs2008.x86.linker.patch.winupack.exe http://www.virustotal.com/analisis/d01be3fb4f209012ec222f831e51c47c - Антивири ругаются, но, чтоб меня забанили, вирусов там нет! Кто попробует - отпишитесь и скажите что вирей там действительно нет, а то ведь никто не поверит новичку. Выставил только для x86 версию. Делал для себя.
Мне несложно под AMD сделать, но надо оригинальный линкер. А у меня его нет Выкладываю здесь (разобрался как) незапакованный патч под vs2008 x86
Статья Microsoft's Rich Signature (undocumented) Опубликована: 05/03/2008 Автор: Daniel Pistelli Статья на английском. Описание: http://www.ntcore.com/Files/richsign.htm Также в разделе Articles есть другие интересные статьи.