макрос в fasm/fasmg, который будет рандомизировать команды?
Вот пример команд:
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
допустим, для примера, через вот этот макрос буду менять:
macro inc [arg] {
common
random = %t mod 2
if random = 1
inc arg
else
add arg, 1
end if
}
и выходить должно что-то вроде
inc eax
add eax, 1
inc eax
add eax, 1
add eax, 1
inc eax
причем каждый раз по разному. А %t выдает одно значение во время одной компиляции. Есть вариант сделать пред обработку через костыль, где я внешне подменяю текст в нужно месте. Но это сложный путь.
Такое только через опкоды генерировать надо. Рандомизируешь опкод инструкции, потом рандомизируешь аргументы.
Да блин. macro rand.srand seed=%t { rand.state = seed } macro rand.next target* { rand.state = (rand.state * 1103515245 + 12345) and 0xffffffff target = (rand.state shr 16) and 0x7fff } macro inc [arg] { common rand.next random if random and 1 inc arg else add arg, 1 end if } rand.srand inc eax inc eax inc eax
работает отлично
Обсуждают сегодня