реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AVRASM2, нужна идея
zombi
сообщение Jan 27 2012, 23:47
Сообщение #1


Гуру
******

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



Нужно сделать так чтобы при каждой компиляции одного и тогоже файла генерился разный код, т.е. каждый мк был уникальным.
Понимаю что нужно редактировать исходник, но не вручную а как-то автоматически.
Вот еслиб было что-то типа такого biggrin.gif

.org PC+random(X)

Кто что может посоветовать.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2012, 05:22
Сообщение #2


Гуру
******

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



Для каких целей нужно, чтобы код был бы всегда разный?

Можно, например, вставить в качестве такой изменяющейся части что-то такое
Код
   .db __DATE__, __TIME__

Используются в примере предопределённые макросы, доющие строки с датой и временем компиляции.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 28 2012, 05:54
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(zombi @ Jan 28 2012, 05:47) *
Нужно сделать так чтобы при каждой компиляции одного и тогоже файла генерился разный код, т.е. каждый мк был уникальным.
Не совсем понятно, ВЫ для каждого МК будете компилить прошивку? biggrin.gif

Проще скомпилировать прошивку один раз а за тем уже какой то самописной утилитой добавлять к ней свой ID в определенном месте.


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Jan 28 2012, 10:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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) *
Не совсем понятно, ВЫ для каждого МК будете компилить прошивку? biggrin.gif

Время компиляции не боьшое (2-3 сек) почему бы и нет biggrin.gif
Главное что бы всё было автомитически, например путем запуска *.bat файла.
Цитата(prottoss @ Jan 28 2012, 09:54) *
Проще скомпилировать прошивку один раз а за тем уже какой то самописной утилитой добавлять к ней свой ID в определенном месте.

Тоже легко находится при сравнении пары прошивок.

Хочется что бы именно код по разному лежал, т.е. все джампы и колы (ну или многие) имели разную кодировку.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2012, 10:49
Сообщение #5


Гуру
******

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



Цитата(zombi @ Jan 28 2012, 14:04) *
Для усложнения дизассемблирования (анализа) кода путём сравнения нескольких прошивок.
...Хочется что бы именно код по разному лежал, т.е. все джампы и колы (ну или многие) имели разную кодировку.

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

Имхо, так сделать - можно, но, не запутаетесь ли Вы при правке (доработке) программы? Не усложните ли Вы жизнь только себе?
Go to the top of the page
 
+Quote Post
zombi
сообщение Jan 28 2012, 11:23
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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 и др.варианты, выполняющие одно и то же действия, но другими командами - в конце-концов: переставить пару команд местами, если это не "повредит" программе...). Разные варианты "полезного" кода - тоже "чередовать" в зависимости от условия в условном операторе пропроцессора.

Имхо, так сделать - можно, но, не запутаетесь ли Вы при правке (доработке) программы? Не усложните ли Вы жизнь только себе?

Даа... с таким текстом о доработках можно забыть навсегда. biggrin.gif

Конечно же речь идёт о законченом и отлаженном проекте.
Желательно незначительное изменение текста программы с обязательным сохранением читабельности (для разработчика).
Go to the top of the page
 
+Quote Post
ataradov
сообщение Jan 30 2012, 16:14
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



А зачем при реверс-инжениринге нужно несколько прошивок? Одну слил и вперед.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 30 2012, 17:29
Сообщение #8


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(zombi @ Jan 28 2012, 14:04) *
Для усложнения дизассемблирования (анализа) кода путём сравнения нескольких прошивок....Хочется что бы именно код по разному лежал..


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

тут выше правильно сказали - "скачал и вперёд".

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

удачи вам
(круглый)
Go to the top of the page
 
+Quote Post
zombi
сообщение Jan 30 2012, 22:34
Сообщение #9


Гуру
******

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



Цитата(Taradov Alexander @ Jan 30 2012, 19:14) *
А зачем при реверс-инжениринге нужно несколько прошивок? Одну слил и вперед.

Думаю Вы правы. Ну просто "шоб було".
И ещё предполагаю что если слитая "пиратами" прошивка откажется работать или будет работать не правильно то они захотят убедиться что правильно оную слили путём сравнения прошивок нескольких чипов. А не тутто было biggrin.gif
Цитата(kolobok0 @ Jan 30 2012, 20:29) *
я предложу вам другой способ. сделайте виртуальную машину. и изменяйте код, который её кормите.

Согласен, надо подумать.
Цитата(kolobok0 @ Jan 30 2012, 20:29) *
а ежели ышо виртуальная машина крутит сама виртуальную машину - взломать такое без путылки хорошего виски - практически анреал... в исходниках вы можете как угодно изголяться - меняя коды команд, от прошивки к прошивки.

Ага, скорее сам запутаешся чем кто разберётся.

Цитата(Палыч @ Jan 28 2012, 13:49) *
В условии можно применить предопределенный макрос __SECOND__.

Действительно есть и __SECOND__ и __MINUTE__ ... __YEAR__ и их можно использовать как угодно!
Но почему в DS на avrsm2 они не описаны???
Go to the top of the page
 
+Quote Post
ae_
сообщение Jan 31 2012, 02:24
Сообщение #10


Участник
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
ветерок
сообщение Jan 31 2012, 04:48
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 29-11-06
Из: Ижевск
Пользователь №: 22 902



Занимался темой в своё время....

По-моему
Себе дороже заниматься этим.
Можно конечно привести полный веер логических цепочек но лень.
И ещё...
В этом мире ну очень мало не повторимого и очень дорогого,чтоб этим замарочится не только для своего эго.
Тем более за последние несколько лет активно подключились к программированию узбеки, китайцы и прочие.
Они пишут очень быстро и дёшего.

Маркетинг должен быть другим.
Думаю автор зря тратит своё время.

Сообщение отредактировал ветерок - Jan 31 2012, 04:54


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Jan 31 2012, 07:24
Сообщение #12


Гуру
******

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



Цитата(ae_ @ Jan 31 2012, 05:24) *
О каком DS идёт речь?

Вот об этом AVRASM2
Студией не пользуюсь.

Цитата(ветерок @ Jan 31 2012, 07:48) *
Думаю автор зря тратит своё время.

Возможно.
Go to the top of the page
 
+Quote Post
ae_
сообщение Jan 31 2012, 09:27
Сообщение #13


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(zombi @ Jan 31 2012, 16:24) *
Студией не пользуюсь.

Help AVRASM2 в формате CHM из AVR Studio 4 Прикрепленный файл  AVRASM.chm.zip ( 416.3 килобайт ) Кол-во скачиваний: 89

upd: Тем, у кого установлена AVR Studio, файл по умолчанию находится здесь - C:\Program Files\Atmel\AVR Tools\Help\AVRASM.chm
Go to the top of the page
 
+Quote Post
zombi
сообщение Jan 31 2012, 10:16
Сообщение #14


Гуру
******

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



Цитата(ae_ @ Jan 31 2012, 13:27) *
Help AVRASM2 в формате CHM из AVR Studio 4

Спасибо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01569 секунд с 7
ELECTRONIX ©2004-2016