Я искал способ извлечь константы из исходных файлов C и изменить их порядок байтов в одном автоматизированном процессе (без ручного ввода).До сих пор мне удалось использовать pycparser для выполнения большей части тяжелой работы за меня, и я создал скрипт, который будет выводить все константы файла C на консоль.Формат, который он печатает, выглядит следующим образом: Константа: int, 0x243F6A88
Мой вопрос: кто-нибудь знает интуитивно понятный способ автоматизации этого процесса преобразования в Python?Я знаю, как изменить порядок следования байтов с помощью join (), но я изо всех сил пытаюсь найти способ сделать это, в котором я могу минимизировать количество ручного ввода.В идеале мой сценарий должен был бы распечатать константы (уже выполнено), а затем использовать какое-то регулярное выражение (может быть,?) Для преобразования любой константы, начинающейся с 0x (есть много случайных чисел, которые выводятся, которые мне не нужны).Я надеюсь, что это имеет смысл, спасибо!
что у меня есть:
class ConstantVisitor(c_ast.NodeVisitor):
def __init__(self):
self.values = []
def visit_Constant(self, node):
self.values.append(node.value)
node.show(showcoord=True)
def show_tree(filename):
# Note that cpp is used. Provide a path to your own cpp or
# make sure one exists in PATH.
ast = parse_file(filename, use_cpp=True,cpp_args=['-E', r'-Iutils/fake_libc_include'])
cv = ConstantVisitor()
cv.visit(ast)
if __name__ == "__main__":
if len(sys.argv) > 1:
filename = sys.argv[1]
else:
filename = 'xmrig-master/src/crypto/c_blake256.c'
show_tree(filename)