/
githubmirror
/
metasploit-framework
Обзор
Документация
Войти
/
githubmirror
/
metasploit-framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lib/metasploit/framework/obfuscation/crandomizer/parser.rb
46 строк
2 KB
await Marsha
Fix typo in doc comment.
22 июл 2021, 10:14
Не верифицирован
22 июл 2021, 10:14
d743509
Код
Авторство
О чём код?
require 'metasploit/framework/obfuscation/crandomizer/utility' require 'metasploit/framework/obfuscation/crandomizer/modifier' module Metasploit module Framework module Obfuscation module CRandomizer class Parser attr_accessor :max_random_weight attr_accessor :fake_functions_collection # Initializes a Metasploit::Framework::Obfuscation::CRandomizer::Parser instance. # # @param weight [Integer] Randomness of the code. # @param fake_functions [Metasploit::Framework::Obfuscation::CRandomizer::CodeFactory::FakeFunctionCollection] def initialize(weight, fake_functions=nil) @max_random_weight = weight @fake_functions_collection = fake_functions end # Returns a parser. # # @param template [String] Source code to parse. # @return [Metasm::C::Parser] def parse(template) main_parser = Metasploit::Framework::Obfuscation::CRandomizer::Utility.parse(template) modifier = Metasploit::Framework::Obfuscation::CRandomizer::Modifier.new(main_parser, fake_functions_collection, max_random_weight) main_parser.toplevel.statements.each do |s| case s.var.type when Metasm::C::Function # Some function objects such as declarations don't really have # any statements, if we run into something like that, skip it. next unless s.var.initializer.respond_to?(:statements) modifier.modify_function(s) end end main_parser end end end end end end