COKPOWEHEU Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 https://ithappens.me/story/1968 2 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 3 часа назад, my504 сказал: Восстановить неизвестно чем созданный код корректно невозможно Я бы так категорично не стал утверждать, а высказался бы так: пока невозможно. Человек может это сделать, значит, когда-нибудь сможет и программа. А компиляторов не так и много, чтобы нельзя было создать базу "родовых признаков"... Дело лишь за хакером-энтузиастом или спонсором. 1 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
my504 Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 1 час назад, ARV сказал: Человек может это сделать, значит, когда-нибудь сможет и программа. Человек тоже не сможет. Если только код не совсем примитивен. А если он еще и оптимизирован, то вообще никакому восстановлению не подлежит. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
ARV Опубликовано 14 мая, 2019 Поделиться Опубликовано 14 мая, 2019 Человек сможет, если будет соответствующим образом мотивирован. Разумеется, я не имею ввиду восстановление до того исходника, какой был скормлен компилятору, а до того, что будет читаем и будет реализовывать тот же алгоритм. 1 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 Если речь идет о восстановлении алгоритма, а не исходника, то человек в состоянии это сделать. Но это не в состоянии сделать автомат, то есть другой алгоритм. Ибо это задача связана с абстрактным человеческим мышлением, то есть с ИНТЕЛЛЕКТОМ. И речь может тут идти только об искусственном интеллекте. А это совершенно другая история... 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 12 часа назад, ARV сказал: Человек может это сделать, значит, когда-нибудь сможет и программа. программа уже может. Я недавно пытался разбираться с дизасемблированным в С-код бинарником одного аудиокодека. Не получилось потому что код использовал внешние таблицы не доступные дизасемблеру, с хитрой навигацией по ним, а так ничего сложного ! Там получается один файл в моем случае 60 тысяч строчек кода, вот такого (если интересно): //----- (0040B690) -------------------------------------------------------- signed int __cdecl sub_40B690(int a1) { signed int result; // eax@2 signed int v2; // eax@3 _DWORD *v3; // ecx@3 int v4; // esi@8 int v5; // ST0C_4@8 int v6; // ST08_4@8 if ( a1 ) { v2 = 0; v3 = (_DWORD *)(a1 + 12); do { if ( !*v3 ) break; ++v2; v3 += 14; } while ( v2 < 31 ); if ( v2 == 31 ) { result = -1; } else { v4 = a1 + 56 * v2; *(_DWORD *)(v4 + 16) = 0x2000000; v5 = *(_BYTE *)(v4 + 18); v6 = *(_BYTE *)(v4 + 19); *(_DWORD *)(v4 + 12) = 5; sub_402010((char *)(v4 + 24), aD_D_D_0, v6, v5, 0); *(_DWORD *)(v4 + 4) = aJun262012_0; *(_DWORD *)(v4 + 8) = a145950; ... 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 Ну я и говорю, IDA уже умеет для винды и пары ходовых компиляторов делать сишный исходники, немного магии поиска-замены и чуть-чуть понимания цели, и можно жить. Но для AVR не умеет вообще... Хотя паттерны узнаваемы весьма. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 27 минут назад, ARV сказал: для винды и пары ходовых компиляторов Только не для компиляторов, а для ассемблеров. Про компилятор которым это что то было скомпилировано и слинковано, оно знать ни чего и не должна в общем то. 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 4 часа назад, ruhi сказал: Только не для компиляторов, а для ассемблеров Почитайте про IDA Pro, чтобы не говорить таких странных и не правильных вещей. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 15 мая, 2019 Поделиться Опубликовано 15 мая, 2019 Только что, ARV сказал: Почитайте про IDA Pro, чтобы не говорить таких странных и не правильных вещей. не хочу :), итак башка лопается 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 16 мая, 2019 Поделиться Опубликовано 16 мая, 2019 (изменено) 17 часов назад, ARV сказал: Ну я и говорю, IDA уже умеет для винды и пары ходовых компиляторов делать сишный исходники, немного магии поиска-замены и чуть-чуть понимания цели, и можно жить. Но для AVR не умеет вообще... Хотя паттерны узнаваемы весьма. Какой смысл в дезассемблировании сущностей, которые и так понятны и узнаваемы? Кому вообще это нужно практически? Кому нужны результаты, трудоемкость получения которых примерно равна или даже больше нежели трудоемкость самостоятельного написания кода? Мало того, что нужно написать код, так ведь его еще нужно как то осмысленно совершенствовать. Восстановленный подобными инструментами код ущербен в принципе. В нем можно разобрать 99% смысла, при том, что вся новизна останется в неразобранном 1%. Беспонтовый инструмент... ЗЫ. Могу дать упражнение для примера сказанного мной выше. Есть пара функций обработки сигнала. АСМ без комментариев и осмысленных названий переменных и меток. Предлагается определить алгоритм обработки сигнала реализуемый этими двумя функциями. Причем результат одной нужен при работе другой. Слабо? Изменено 16 мая, 2019 пользователем my504 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 16 мая, 2019 Поделиться Опубликовано 16 мая, 2019 3 часа назад, my504 сказал: Слабо? Сколько платите? И в какие сроки ибо только это определяет, слабо или нет. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 16 мая, 2019 Поделиться Опубликовано 16 мая, 2019 (изменено) Я реверс-инжинирингом ПО занимался пару раз, и некоторое время следил, как этим занимаются другие. Полноценный реверс алгоритма по коду не делается, приходится и тесты всякие делать, и в "песочнице" запускать и сравнивать... Дело непростое, но выполнимое. Что касается смысла, то я вполне согласен с вами: заниматься восстановлением исходника на ЯВУ занятие бессмысленное и бесперспективное. Однако, если за это платят... почему нет? В реальном реверсе нет нужды не только в получении полного исходника на ЯВУ, но и в понимании точного алгоритма. Как правило, всегда интересует тот самый 1%, и то, скорее всего, лишь в плане того, как его обойти или выдрать и применить в своём коде. В основном приходится искать команду JNZ с целью заменить её на JZ Ну или 10...110 таких команд. Изменено 16 мая, 2019 пользователем ARV 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 16 мая, 2019 Поделиться Опубликовано 16 мая, 2019 8 часов назад, ARV сказал: Сколько платите? И в какие сроки Это МОЙ код. Это УПРАЖНЕНИЕ. Ребус. За него не платят. Точнее, если и платят, то составителю ребуса. 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 16 мая, 2019 Поделиться Опубликовано 16 мая, 2019 38 минут назад, my504 сказал: Ребус. За него не платят. Точнее, если и платят, то составителю ребуса. а приз решившему ребус? 1 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
Дмитрий Мамедиев Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 На атмега 8 только два входа для отслеживания сигнала int0 и int1. Мне нужно три, есть альтернатива? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ART_ME Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 21 минуту назад, Дмитрий Мамедиев сказал: только два входа для отслеживания сигнала int0 и int1. Мне нужно три, есть альтернатива? Есть! 0 Никогда не спорьте с дураками. Они опустят Вас до своего уровня и победят за счет опыта. Ссылка на комментарий Поделиться на другие сайты Поделиться
Дмитрий Мамедиев Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 Эммм я.... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 (изменено) 36 минут назад, Дмитрий Мамедиев сказал: Мне нужно три, есть альтернатива? вход таймера можно использовать - его тоже можно сконфигурировать на отлов фронтов, но придется исхитриться, хотя может получиться даже лучше чем на простых INT-ах, зависит от специфики задачи. Compare там есть? Изменено 20 мая, 2019 пользователем ruhi 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
Demonrostov Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 48 минут назад, Дмитрий Мамедиев сказал: Мне нужно три, есть альтернатива? Где то встречал такой вариант. В прерывании проверяем пины и по их состоянию определяем какой сигнал вызвал это прерывание. Таким способом можно сделать целую кучу! 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Mars36 Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 (изменено) Доброго времени. Хочу найти ресурс где можно подробно почитать про компиляцию и линковку проекта для stm32f103 в линуксе. В гугле много инфы на счет самого мейка и с ним более менее понятно, а вот процесс компиляция под конкретный контроллер мне найти не удалось. Хотелось бы узнать на зависимости файлов CMSIS и весь алгоритм. Хочу научится компилировать проект из консоли, а в идеале прикрутить все необходимое к нужному мне текстовому редактору. Рассматривал готовые мейкфайлы, но написаны они достаточно сложно для моего познания в синтаксисе мейка. Пока планирую написать хотя бы элементарный мейк. Изменено 20 мая, 2019 пользователем Mars36 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexeyslav Опубликовано 20 мая, 2019 Поделиться Опубликовано 20 мая, 2019 10 часов назад, Дмитрий Мамедиев сказал: два входа для отслеживания сигнала int0 и int1. Мне нужно Любой порт так же поддерживает прерывания по перепаду уровня, для некоторых целей их вполне можно использовать. Но есть ньюансы. Прерывание по порту - одно на все выводы, но раз тебе нужно просто третье то не имеет значения. Просто разрешить прерывание только по одному выводу порта, и его изменение будет дёргать обработчик. И второй ньюанс - в отличие от int0/1 это прерывание синхронное и стробируется частотой ядра, короткие импульсы короче двух периодов тактовой частоты можно упустить... Фронт и спад не различает - одинаково реагирует на оба. Не работает в режиме глубокого сна - этим прерыванием вывести контроллер с глубокого сна нельзя. 0 Учение - изучение правил. Опыт - изучение исключений. Ссылка на комментарий Поделиться на другие сайты Поделиться
Starichok Опубликовано 21 мая, 2019 Поделиться Опубликовано 21 мая, 2019 6 часов назад, Alexeyslav сказал: Любой порт так же поддерживает прерывания по перепаду уровня где ты увидел это в АТМега8? 0 Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду. Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 22 мая, 2019 Поделиться Опубликовано 22 мая, 2019 В 20.05.2019 в 21:32, Mars36 сказал: Хочу найти ресурс где можно подробно почитать про компиляцию и линковку проекта для stm32f103 в линуксе. Вот для начала. http://we.easyelectronics.ru/STM32/ispolzovanie-gcc-dlya-stm32f100.html Нужно будет в makefile поменять серию устройства. В 20.05.2019 в 21:32, Mars36 сказал: проекта для stm32f103 Тут еще важны буквы, от них зависит память устройства и линия. Для классического f103C8T6 это medium density если не ошибаюсь. Если описать алгоритм вкратце: нужно скомпилировать main (юзерский код) и startup (настройка памяти, прерываний и всего прочего, эта штука компилируется из ассемблерного файла, предоставляемого производителем, только надо найти в нужном формате), у меня это Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_ml.s. Для всей серии stm32f1x испольщуется один заголовочный файл #include <stm32f10x.h> , выбор конкретного камня задается дефайном DEVCLASS (лучше всего в makefile через флаг -D ), например -D DEVCLASS = STM32F10X_MD. Но дополнительно надо еще указать путь к инклюдам на конкретные камни, например Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/ Мало того, при линковке надо еще указать распределение памяти и еще какие-то параметры. Это делается указанием линкеру файла настроек через флаг -T, например -T ld/stm32f10xC8.ld Из того что вспомнил, вроде все. Можно бы еще упомянуть прошивку, но это уже будет зависеть от программатора. Я пробовал с stm32flash (uart bootloader) и самодельным st-link2 (прошитым через тот же stm32flash, естественно) через openocd. 1 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Дмитрий Мамедиев Опубликовано 22 мая, 2019 Поделиться Опубликовано 22 мая, 2019 #define dirX PINB7 #define dirY PINB6 #define dirZ PIND4 #define stepX PIND1 #define stepY PIND0 #define stepZ PIND6 int massz[4]={(PORTC|=(1<<PINC5)),(PORTC|=(1<<PINC4)),(PORTC|=(1<<PINC3)),(PORTC|=(1<<PINC2))}; ISR(INT0_vect) { //unsigned int i=0; if (PIND&(1<<dirZ)) { if (PIND&(1<<stepZ)) { massz[2]; } //i--; } else { if (PIND&(1<<stepZ)) { massz[0]; } //i++; } } int main(void) { INTinit();//вызываем функцию инициализации прерывания sei();//устанавливаем бит глобального разрешения прерываний port_ini(); } что я делаю не так? настройки INT0 не привожу 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.