Подсказки для чтения кода ASM?

Использование flagIN, flagOUT и apply позволяет маскировать данные в нескольких столбцах.

Вот окончательный вариант mysql_query_rules, который у меня есть:

/* only show the first character in column_name */
INSERT INTO mysql_query_rules (rule_id,active,username,schemaname,flagIN,match_pattern,re_modifiers,flagOUT,replace_pattern,apply)
          VALUES (1,1,'developer','my_db',0,'(\(?)(`?\w+`?\.)?\`?column_name\`?(\)?)([ ,\n])','caseless,global',6,    "\1CONCAT(LEFT(\2column_name,1),REPEAT('X',CHAR_LENGTH(column_name)-1))\3 column_name\4",0);
/* masking the last 3 characters in second_column_name */
INSERT INTO mysql_query_rules (rule_id,active,username,schemaname,flagIN,match_pattern,re_modifiers,flagOUT,replace_pattern,apply)
          VALUES (2,1,'developer','my_db',6,'(\(?)(`?\w+`?\.)?\`?second_column_name\`?(\)?)([ ,\n])','caseless,global',NULL,
                "\1CONCAT(LEFT(\2second_column_name,CHAR_LENGTH(second_column_name)-3),REPEAT('X',3))\3 second_column_name\4",1);

Значения трех переменных следующие:

  • flagIN, [117 ], apply - это позволяет нам создавать «цепочки правил», которые применяются один за другим. Значение входного флага установлено в 0, и в начале рассматриваются только правила с flagIN = 0. Когда для определенного запроса найдено соответствующее правило, оценивается flagOUT, и если NOT NULL, запрос будет помечен с указанным флагом в flagOUT. Если flagOUT отличается от flagIN, запрос выйдет из текущей цепочки и войдет в новую цепочку правил, имеющую flagIN в качестве нового входного флага. Если flagOUT совпадает с flagIN, запрос будет переоценен снова по первому правилу с указанным flagIN. Это происходит до тех пор, пока не будет найдено больше подходящих правил или пока не будет установлено значение apply (это означает, что это последнее правило, которое будет применено)

5
задан Vadim Kotov 16 August 2017 в 09:32
поделиться

4 ответа

Код ASM трудно читать. Нет волшебной вещи, которая облегчает расшифровку.

Единственные советы, которые я могу вам дать: Добавьте много комментариев к коду. Документируйте, что делает последовательность инструкций. Не сосредотачивайтесь на самих инструкциях, если это не нужно.

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

7
ответ дан 18 December 2019 в 13:19
поделиться

Я помню свой институт. Я напечатал сложную программу на ассемблере на бумажном рулоне, а затем покрыл эту роль цветными линиями (карандашами), обозначив процедуры, блоки, прыжки и другие вещи. Возможно, существуют какие-то программы для «визуализации» ассемблерного кода Motorola, но я не знаю об этом.

2
ответ дан 18 December 2019 в 13:19
поделиться

Этот пост в блоге является родственным. Это серия визуализаций игр Atari 2600, их машинного кода и сегментов данных, иллюстрируемых линиями, обозначающими скачки.

Это не ответ, но это интересно.

3
ответ дан 18 December 2019 в 13:19
поделиться

Поскольку это экзамен, справляйтесь с ним, как с любым другим экзаменом - организуйте! Вы должны быть в состоянии быстро идентифицировать блоки кода. Начните с инструкций ветвления / возврата, которые нарушают поток управления. Они обычно указывают на цикл или подпрограмму метки. Как только вы поймете, как работает код, выясните, что он делает внутри каждого блока.

2
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: