PDA

Просмотр полной версии : Пару вопросов по ассемблеру


hiphop191817
31.05.2010, 15:53
1)Как сделать цикл на ассемблере, чтобы во время его выполнения(ну предположим секунд 20 он длится) компьютер не подвисал на эти 20 секунд(через sleep не предлагать)
2)Подскажите алгоритм шифрования, не повышающий энтропию файлов и чтобы его не очень сложно было реализовать на ассемблере(в нём естесственно должен существовать ключ, а то будет получаться всё время одно и то же)

slesh
31.05.2010, 16:08
1) чтоже ты там делаеш такого что у тя комп подвисает? Оптимизируй код. Да и циклы 20 сек - это жестокие вычисления какието. Или просто тупо расставь по коду invoke Sleep, 1

2) как вариант юзай таблицу замен. т.е. цифры от 0 до 255 перемешивай случайным образом. и потом из этой таблици бери данные. Тогда ключе - это таблица замены размером 256 байт. Реализуется очень просто, пару байт на асме

hiphop191817
31.05.2010, 16:15
1)Просто обычный цикл ложу там в eax 0 , в ebx ffffffff и делаю цикл с шагом 1 и в нём там например mov ecx,eax и из за этого подвисает.
Со слипом не вариант, его антивирусы пропускают.

2)Можешь дать ссыль где поподробнее про это моно почитать, а то не совсем понятно

hiphop191817
31.05.2010, 16:47
Щас порылся в инете и нашёл некий алгоритм tea со 128 битным ключём, он не повышает энтропию?

ZagZag
31.05.2010, 22:13
Чтоб не подвисало гугли API WaitForSingleObject (http://msdn.microsoft.com/en-us/library/ms687032%28VS.85%29.aspx)

Пример использования (http://www.vbforums.com/showthread.php?t=455948)

AlexTheC0d3r
31.05.2010, 22:33
Чтоб не подвисало гугли API WaitForSingleObject (http://msdn.microsoft.com/en-us/library/ms687032%28VS.85%29.aspx)

Пример использования (http://www.vbforums.com/showthread.php?t=455948)
ТС вообще-то насчет АСМа вопросы задавал

altblitz
31.05.2010, 23:21
2)Подскажите алгоритм шифрования, не повышающий энтропию файлов и чтобы его не очень сложно было реализовать на ассемблере(в нём естесственно должен существовать ключ, а то будет получаться всё время одно и то же)
strictly ASM.

Trillian keygen, ('05 года, не знаю, есть ли ещё в архивах моих),
прогонял keygen' в дебаггере до мозолей на пальцах,
так и не смог реверс-инженирнуть код упаковки ((

единственное, поставил брейк на вход в процедуру отображения в Вин,
и снял "слепок" keygen-а в памяти с WinHex.

строго, не шифровальщик - packer. но очень классный packer.
реализовать, так понимается не сложно,
ибо встречал подобную реализацию и в других кигенах...

hiphop191817
31.05.2010, 23:37
Насчёт 2) уже сделал код, правда у него ключ выходной получился не 256 а гораздо меньше, но суть его в том, что сказал слэш.

А вот насчёт длинного цикла:неужели его нельзя сделать без функций вообще, а за счёт обычных ассемблерных команд, чтобы не подвисало? Если это действительно так, то я разочарован....

miako
31.05.2010, 23:51
Потоки. На асме правда хз как. Но ведь WinAPI тоже на ассемблер раскладывается:)

hiphop191817
31.05.2010, 23:56
Потоки. На асме правда хз как. Но ведь WinAPI тоже на ассемблер раскладывается:)


Да понятное дело, что win api это ассемблерный код, но тут дело не в этом. А именно в том, что в самом коде будет виден именно вызов функции, а мне нужно, чтобы там никаких функций не было.

ZagZag
01.06.2010, 00:21
ТС вообще-то насчет АСМа вопросы задавал
А какая разница? Это же API

ТС, по поводу (1), глянь примеры в MASM32 или в FASM. (На каком кодишь?)

slesh
01.06.2010, 00:45
Ну тут всё ясно, человек наверное чтото типа криптера пишет вот ему и нужен какойто алгоритм который считает долго и нудно (чтобы обойти эмуляторы по таймауту), но при этом не хочется паливно грузить проц.

altblitz
01.06.2010, 01:16
А именно в том, что в самом коде будет виден именно вызов функции, а мне нужно, чтобы там никаких функций не было.
а в том пакере - ни одного вызова функций Win API.
и не остановить процесс распаковки, и не поставить брейки.
.code меняется при каждой АСМ операции.

да, немного может и не по теме, но всё же.
GCC-компайлер позволяет создавать программы без .lib, без обращения к стандартным lib MS Win.

desTiny
01.06.2010, 02:07
чтобы не грузить можно попробовать выставлять на время не очень содержательного цикла idle-time-priority.

//altblitz, по твоим постам в теме... ты под чем? :)