|
|
  |
AVRASM2, нужна идея |
|
|
|
Jan 28 2012, 10:04
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Палыч @ Jan 28 2012, 09:22)  Для каких целей нужно, чтобы код был бы всегда разный? Для усложнения дизассемблирования (анализа) кода путём сравнения нескольких прошивок. Сомневаюсь что это сильно усложнит, но всёже ... Цитата(Палыч @ Jan 28 2012, 09:22)  Можно, например, вставить в качестве такой изменяющейся части что-то такое Код .db __DATE__, __TIME__ Это можно, но эта последвательность будет явно видна по одним и темже адресам. Цитата(prottoss @ Jan 28 2012, 09:54)  Не совсем понятно, ВЫ для каждого МК будете компилить прошивку?  Время компиляции не боьшое (2-3 сек) почему бы и нет Главное что бы всё было автомитически, например путем запуска *.bat файла. Цитата(prottoss @ Jan 28 2012, 09:54)  Проще скомпилировать прошивку один раз а за тем уже какой то самописной утилитой добавлять к ней свой ID в определенном месте. Тоже легко находится при сравнении пары прошивок. Хочется что бы именно код по разному лежал, т.е. все джампы и колы (ну или многие) имели разную кодировку.
|
|
|
|
|
Jan 28 2012, 10:49
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(zombi @ Jan 28 2012, 14:04)  Для усложнения дизассемблирования (анализа) кода путём сравнения нескольких прошивок. ...Хочется что бы именно код по разному лежал, т.е. все джампы и колы (ну или многие) имели разную кодировку. Для этого нужно самому хорошо "поработать" над Вашей программой. Используйте прероцессор (#if #else #elif #endif). В условии можно применить предопределенный макрос __SECOND__. Например, если число секунд меньше 30, то один участок, больше - другой; в другом месте - например, условие: число секунд <10, в третьем -... и т.д. Если свободной памяти много, можно "разбавить" программу "бесполезными" кусками кода разной длины от какого-либо условия, приведенного выше, но, выглядящими вполне "осмысленно" (оформить процедурами, вызовы/переходы между этими кусками...). Естественно, вставлять эти куски не абы куда, а между "нормальными" процедурами. Если вставки будут иметь разную длину от условия, то и "полезные" куски кода будут размещаться в разных прошивках по разным адресам. Можно ещё и "полезные" куски кода написать в двух-трёх вариантах (например, обращение к регистрам устройств можно сделать через OUT/IN, а можно - через LD/ST и др.варианты, выполняющие одно и то же действия, но другими командами - в конце-концов: переставить пару команд местами, если это не "повредит" программе...). Разные варианты "полезного" кода - тоже "чередовать" в зависимости от условия в условном операторе пропроцессора. Имхо, так сделать - можно, но, не запутаетесь ли Вы при правке (доработке) программы? Не усложните ли Вы жизнь только себе?
|
|
|
|
|
Jan 28 2012, 11:23
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Спасибо Палыч. Цитата(Палыч @ Jan 28 2012, 14:49)  Используйте прероцессор (#if #else #elif #endif). В условии можно применить предопределенный макрос __SECOND__. Например, если число секунд меньше 30, то один участок, больше - другой; в другом месте - например, условие: число секунд <10, в третьем -... и т.д. Надо попробывать. Цитата(Палыч @ Jan 28 2012, 14:49)  Если свободной памяти много, можно "разбавить" программу "бесполезными" кусками кода разной длины от какого-либо условия, приведенного выше, но, выглядящими вполне "осмысленно" (оформить процедурами, вызовы/переходы между этими кусками...). Естественно, вставлять эти куски не абы куда, а между "нормальными" процедурами. Если вставки будут иметь разную длину от условия, то и "полезные" куски кода будут размещаться в разных прошивках по разным адресам. Морочливо, но можно. Цитата(Палыч @ Jan 28 2012, 14:49)  Можно ещё и "полезные" куски кода написать в двух-трёх вариантах (например, обращение к регистрам устройств можно сделать через OUT/IN, а можно - через LD/ST и др.варианты, выполняющие одно и то же действия, но другими командами - в конце-концов: переставить пару команд местами, если это не "повредит" программе...). Разные варианты "полезного" кода - тоже "чередовать" в зависимости от условия в условном операторе пропроцессора.
Имхо, так сделать - можно, но, не запутаетесь ли Вы при правке (доработке) программы? Не усложните ли Вы жизнь только себе? Даа... с таким текстом о доработках можно забыть навсегда. Конечно же речь идёт о законченом и отлаженном проекте. Желательно незначительное изменение текста программы с обязательным сохранением читабельности (для разработчика).
|
|
|
|
|
Jan 30 2012, 17:29
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(zombi @ Jan 28 2012, 14:04)  Для усложнения дизассемблирования (анализа) кода путём сравнения нескольких прошивок....Хочется что бы именно код по разному лежал.. скажите, когда Вы смотрите чужую прошивку на азме, вы её как воспринимаете? правильно - как чёрный ящичек, где вот понятны хвостики. и далее раскрутка за хвостики... Теперь вопрос, а нафига вам несколько чёрных ящечков с кучей хвостов? ну если только в одной была взведена ознакомительная версия, а в другой типа боевая. (больше на ум что то нифига не приходит, когда сравнительный анализ потребуется)... тут выше правильно сказали - "скачал и вперёд". я предложу вам другой способ. сделайте виртуальную машину. и изменяйте код, который её кормите. а ежели ышо виртуальная машина крутит сама виртуальную машину - взломать такое без путылки хорошего виски - практически анреал... в исходниках вы можете как угодно изголяться - меняя коды команд, от прошивки к прошивки. удачи вам (круглый)
|
|
|
|
|
Jan 30 2012, 22:34
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Taradov Alexander @ Jan 30 2012, 19:14)  А зачем при реверс-инжениринге нужно несколько прошивок? Одну слил и вперед. Думаю Вы правы. Ну просто "шоб було". И ещё предполагаю что если слитая "пиратами" прошивка откажется работать или будет работать не правильно то они захотят убедиться что правильно оную слили путём сравнения прошивок нескольких чипов. А не тутто было Цитата(kolobok0 @ Jan 30 2012, 20:29)  я предложу вам другой способ. сделайте виртуальную машину. и изменяйте код, который её кормите. Согласен, надо подумать. Цитата(kolobok0 @ Jan 30 2012, 20:29)  а ежели ышо виртуальная машина крутит сама виртуальную машину - взломать такое без путылки хорошего виски - практически анреал... в исходниках вы можете как угодно изголяться - меняя коды команд, от прошивки к прошивки. Ага, скорее сам запутаешся чем кто разберётся. Цитата(Палыч @ Jan 28 2012, 13:49)  В условии можно применить предопределенный макрос __SECOND__. Действительно есть и __SECOND__ и __MINUTE__ ... __YEAR__ и их можно использовать как угодно! Но почему в DS на avrsm2 они не описаны???
|
|
|
|
|
Jan 31 2012, 02:24
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(zombi @ Jan 31 2012, 07:34)  ...Действительно есть и __SECOND__ и ... Но почему в DS на avrsm2 они не описаны??? О каком DS идёт речь? Макросы описаны в хелпе к студии: AVR Studio 4.xx -> Help -> AVR Tools User Guide -> Contents -> AVR assembler 2 -> Preprocessor -> Pre-defined macros
|
|
|
|
|
Jan 31 2012, 07:24
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(ae_ @ Jan 31 2012, 05:24)  О каком DS идёт речь? Вот об этом AVRASM2Студией не пользуюсь. Цитата(ветерок @ Jan 31 2012, 07:48)  Думаю автор зря тратит своё время. Возможно.
|
|
|
|
|
Jan 31 2012, 09:27
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(zombi @ Jan 31 2012, 16:24)  Студией не пользуюсь. Help AVRASM2 в формате CHM из AVR Studio 4
AVRASM.chm.zip ( 416.3 килобайт )
Кол-во скачиваний: 89upd: Тем, у кого установлена AVR Studio, файл по умолчанию находится здесь - C:\Program Files\Atmel\AVR Tools\Help\AVRASM.chm
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|