Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.240.243] |
|
Сообщ.
#1
,
|
|
|
Кто-нибудь знает такого зверя, как crinkler?
Пишу элементарный код (hello world), линкую crinkler'ом, запускаю – тишина. Смотрю диспетчер задач – висит, грузит 1 ядро по полной. Что я делаю не так? Прикрепляю примеры (на fasm, nasm, masm, uasm с bat-никами для компиляции через link и crinkler, результаты в папке out). p.s. Пробовал на 2-х компах с Win10 x64, а также в VMware с Win7 x86, WinXP. Не работает ни один из примеров (кроме слинкованных обычным link'ом, разумеется). Прикреплённый файлcrinkler_test.zip (1,75 Мбайт, скачиваний: 91) Добавлено x64dbg вызывает исключение ещё до entry point, а Оля при запуске анимации бесконечно крутиться в разных циклах (распаковывает? хеширует?) Вообще, странная штука. Если я меняю в entry point (определяемом hiew) первую инструкцию на int3, ud2 или cli, прога либо слетает (в Win10, причём втихую), либо просто молча висит в процессах (Win7). Только XP ругается (сбрасывает прогу с сообщением об исключении). При зависании (Win7) проц уже не грузится и объём занятой памяти вместо 100 Мб всего 100 Кб. Добавлено Установка опций /hashtries:1 /hashsize:1 (или /hashtries:0), отключение антивиря и запуск от админа не помогают... Вернее, так: при установке опции /hashsize:1 (/hashtries на это не влияет) примерно через 10 происходит следующее (тут я только вожу мышкой, ничего не нажимаю). https://cloud.mail.ru/public/Jd4Q/xtE76eyak |
Сообщ.
#2
,
|
|
|
При запуске на XP (VMware) с ключом /hashsize:1 через несколько секунд получаем исключение, см. скрины.
Прикреплённый файлcrinkler_crash_screen1.png (15,17 Кбайт, скачиваний: 548) Прикреплённый файлcrinkler_crash_screen2.png (13,48 Кбайт, скачиваний: 548) Добавлено Понятно... 10-ка почему-то при встрече с ud2 вообще не выдаёт исключений. И в Process Explorer'е происходит то же самое, что и на видео... Короче, тупо слетает прога через 10 секунд при задании ключа /hashsize:1 и всё... Добавлено И 7-ка (установленная на VMware) тоже молчит при встрече с ud2 (не уничтожаю процесс). Так что, с entry point и PE-форматом всё ок, прога нормально загружается, нормально запускается... |
Сообщ.
#3
,
|
|
|
Поведение здорово смахивает на ситуацию с исчерпанием стека.
Добавлено P.S. Если с этим сталкивается ядро, когда только создаёт процесс, пробует прогрузить DLLки и только лишь подготавливается к передаче управления в entry point, то вполне объяснимо и отсутствие диагностики, и игнор трапов на старте, до которых дело просто не доходит. Добавлено P.P.S. Попробуй DEP отключить. |
Сообщ.
#4
,
|
|
|
Да не... я ж говорю, что в entry point управление передаётся, см. выше. Иначе не слетала бы прога при замене в EP первых байт на int3/ud2. А в x64dbg недоработка просто какая-то...
DEP отключил для процесса – не помогло. Но я и не рассчитывал. Попробуй запустить вот эти интры. У тебя какие запускаются? И какой камень? У меня ни одна не пашет. На 7-ке VMware "humppatunneli" показывает полосу загрузки, затем только мигающий кубик, "sugarcube" – чёрный экран, затем слетает, а "sound my windows" глючит (см. скрин). На XP VMware не пашет ничего (вылетает с сообщением об исключении). На ноуте (там тоже 10 x64) работает "humppatunneli" (но при выходе выдаёт исключение), "sugarcube" показывает только начальную картинку, "sound my windows" жутко тормозит (ну это может из-за слабой видеокарты - интегрированной). "Shoot The Code" не пашет (хотя автор пишет, что на Intel может не работать). Хотя и там, и там Core i5. DEP включен везде, включая 7-ку и XP в VMware. А вот мои "test"ы не пашут ни там, ни тут, на в VMware... Вот я запустил свой test через Olly (с /hashsize:1), он остановился на попытке записи (stosb) по адресу 0053C000, при этом ESP=01C3FF84 (далековато). Короче, он пишет, пишет, а потом ба-бац и "усё, рехламент". Собственно, мне не очень интересно копаться в этих дербрях. Тут вопрос в том, что слинкованная прога должна работать (ну хотя бы где-то: на ноуте или VMware), а она не пашет. Почему? Что нужно сделать (какие ключи задать или что-то ещё), чтобы заработала? А 10-ка (в т.ч. на ноуте) и 7-ка (VMware) не выдают сообщений и на таком коде тоже: format PE GUI 4.0 include 'win32axp.inc' .code start: ud2 invoke ExitProcess, 0 .end start Прикреплённый файлintros.zip (18,45 Кбайт, скачиваний: 95) Прикреплённый файлthe_sound_my_windows.png (312,89 Кбайт, скачиваний: 506) Добавлено Читаю сейчас про опции, короче... |
Сообщ.
#5
,
|
|
|
Цитата Jin X @ Кто-нибудь знает такого зверя, как crinkler? Пишу элементарный код (hello world), линкую crinkler'ом, запускаю – тишина. Смотрю диспетчер задач – висит, грузит 1 ядро по полной. Что я делаю не так? Посмотри на дикую разницу в размерах исполняемых модулей. Как будто не слинковалось с библиотеками. Можно посоветовать протрассировать программу Olly - дибаггером по-шагово. Тогда, возможно, станет понятно, что произошло. |
Сообщ.
#6
,
|
|
|
Цитата ЫукпШ @ Разницу между чем и чем? test_link и test_crinkler? Так это ж не просто линкер, это ещё и упаковщик, причём жётский, для демосценеров...Посмотри на дикую разницу в размерах исполняемых модулей. Цитата ЫукпШ @ Так, я ж писал об этом:Olly - дибаггером по-шагово. Тогда, возможно, станет понятно, что произошло. Цитата Jin X @ Вот я запустил свой test через Olly (с /hashsize:1), он остановился на попытке записи (stosb) по адресу 0053C000, при этом ESP=01C3FF84 (далековато). Короче, он пишет, пишет, а потом ба-бац и "усё, рехламент". |
Сообщ.
#7
,
|
|
|
Короче. Идей нет, кроме одной. У всех этих образов нахрен испохаблен заголовок модуля. В них нет вообще ничего, ни одной секции, даже кодовой. Любые циферки, как-либо количественно характеризующие образ, хранят абсолютно неадекватные значения, более-менее приличные только качественные значения, типа версии подсистемы для запуска или типа бинарного кода. Точка входа выставлена в 5Ch, т.е. в зарезервированную под null pointer область, что скорее всего немедленно вызывает трап. И была бы мессага по этому поводу, но, видать, этот трап каким-то образом перехватывается кадром SEH, уже настроенным на упакованный образ заранее подготовленным в нём обработчиком, поэтому он получает управление и начинает творить свои тёмные дела по распаковке. Всё, что я смог увидеть в нормальном отладчике – зацикливание в цикле loop, размером с три/четыре десятка байт, со значением что-то типа 0FFFEXXXXh в ECX. Думаю, без кернел-отладчика тут не обойтись. В своё время SoftIce-ом я творил чудеса, но с XP за него не брался, да и испохабился он.
|
Сообщ.
#8
,
|
|
|
Цитата Qraizer @ Да, тем не менее, они запускаются (у многих, кроме меня... или кроме мною слинкованной проги, она у тебя же тоже не пашет?) У всех этих образов нахрен испохаблен заголовок модуля. |
Сообщ.
#9
,
|
|
|
У меня не пашет, но у меня на работе интегрёвое видео, а дома я не пробовал.
|
Сообщ.
#10
,
|
|
|
Цитата Qraizer @ Не пашут ни мои тесты, ни интры? У меня не пашет |
Сообщ.
#11
,
|
|
|
Ну, интры, вроде, проходят дальше твоих примеров, но я не уверен. Надо дома попробовать, на нВидии.
|
Сообщ.
#12
,
|
|
|
Вот в ветке разработчика вопрос вчера задал...
http://www.pouet.net/prod.php?post=816387 |
Сообщ.
#13
,
|
|
|
Блин, забыл совсем.
Дома, на нВидии, все интры работают. |
Сообщ.
#14
,
|
|
|
Ответ найден! Проблема была в lib'ах от MASM32.
Надо просто заменить путь на "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\x86" (или т.п.) И всё заработало! Ппц... |