Хакер за июнь. Программная оборона
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Хакер за июнь. Программная оборона - 2007-08-12 01:04:03.170000
|
|
|
The Svin
Сообщений: 24
Оценки: 0
Присоединился: 2007-08-12 00:10:43.296666
|
Начал читать сабжевую статью Исупова. Наткнулся на странно написанный код:
00401000: jmp 00401028 ;Hex-коды перехода - EB26h
00401002: .... ;закодированные инструкции
00401028: mov ecx,27
0040102D: push edx
0040102E: push ecx
0040102F: mov edx, [ecx+00401000]
00401035: xor edx,35
00401038: mov [ecx+00401000], edx
0040103E: pop ecx
0040103F: pop edx
00401040: loop 0040102D
00401042: jmp 00401002
Далее идут слова Знаю, что ты скажешь: "Это неправильно! Кодироващик затерает байт перехода… Ну и так далее. Даже не знаю, с чего правильно начать. Ну, пусть с "мелочей". Понятно, что целей оптимизации тут не преследовалось, но код сам по себе странный. 1. Зачем например push и pop ecx делать, если между этими инструкциями ecx не меняется? 2. Зачем вообще помещать что-то в регистр edx, когда можно просто ксорить память на непостредственный операнд? Весь код:
0040102D: push edx
0040102E: push ecx
0040102F: mov edx, [ecx+00401000]
00401035: xor edx,35
00401038: mov [ecx+00401000], edx
0040103E: pop ecx
0040103F: pop edx
00401040: loop 0040102D
Можно было свести к двум! инструкциям, без всяких особенных хитрых оптимизаций, просто убрав лишнее:
@@:
xor byte ptr [ecx+00401000], 35
loop @@
Ладно, понято, что статья не о программировании, хотя речь тут идёт не о хитростях, а просто о непонятном коде, который написан больше чем нужно но не делает его понятней читателю, а просто запутывает странностями и нелогичностью. Рассмотрим саму цель декларированную автором: Отксорить весь программный код на 35. При этом и инструкцию перехода. Сразу обратим внимание на адресацию [ecx+401000] цель была видимо изменить байты в диапазоне [401000:401027] используя косвенно ecx, который изменяет loop. Но loop нерестанет джампить как только в ecx окажется 0. И при ecx=0 уже тело цикла не будет выполнено. А это значит, что байт по адресу 401000 никогда бы при такой адресации и алгоритме не изменился.
|
|
|
RE: Хакер за июнь. Программная оборона - 2007-11-25 21:43:42.236666
|
|
|
CrawlerLOL
Сообщений: 2
Оценки: 0
Присоединился: 2007-11-21 13:56:10.350000
|
Привет. А вот и автор в студии (Исупов aka Cr@wler). Отвечу на вопросы, хотя и поздно. Думаю, читателям тоже будет интересно. Как ты можешь понять, приведенный код - это каркас для многих методов кодирования, отсюда вытекают и ответы на твой вопрос. Инструкции push\pop (конечно, можно и pushad\popad) оставлены для того, чтобы при применении других методов (не банального ксора) элементарно, не запариваясь, поменять (де)криптующий код. Из этого вытекает и ответ на твой вопрос: quote:
2. Зачем вообще помещать что-то в регистр edx, когда можно просто ксорить память на непостредственный операнд? Ксор на операнд - слишком сложно для понимания новичка. Для нового человека гораздо понятнее будет объяснить на пальцах, вроде "берем яблоко, грушу и делаем пюре" )). Кроме того, в сложных схемах все же более удобным будет алгоритм, который оперирует с регистрами. Спасибо за замечания по оптимизации, это выдает твой высокий уровень технических знаний. Удачи в кодинге!
|
|
|
RE: Хакер за июнь. Программная оборона - 2007-11-25 21:50:28.293333
|
|
|
CrawlerLOL
Сообщений: 2
Оценки: 0
Присоединился: 2007-11-21 13:56:10.350000
|
и еще… quote:
Но loop нерестанет джампить как только в ecx окажется 0. И при ecx=0 уже тело цикла не будет выполнено. А это значит, что байт по адресу 401000 никогда бы при такой адресации и алгоритме не изменился. а это уже невнимательность (не моя, а Ваша =) по отношению к использованному алгоритму. Даже если бы тело цикла и НЕ выполнялось, в задачи алгоритма не входит правка верхнего байта, так как, по крайней мере, 2 байта были заменены на машинные коды eb 26.
|
|
|
RE: Хакер за июнь. Программная оборона - 2007-12-11 10:22:06.340000
|
|
|
MaZaHaKa90
Сообщений: 2
Оценки: 0
Присоединился: 2007-12-10 22:52:32.643333
|
привет всем!!! у меня знания на уровни Юзера
|
|
|
RE: Хакер за июнь. Программная оборона - 2007-12-11 10:24:16.800000
|
|
|
MaZaHaKa90
Сообщений: 2
Оценки: 0
Присоединился: 2007-12-10 22:52:32.643333
|
кто может взломать сервак?:)
|
|
|
|
|