#pragma code_seg(push, ".text$EBC000")
code_seg prama更改.text节中的功能顺序。我希望有一个像CHANGE_FUNCTION_ORDER
这样的通用宏,它每次使用__COUNTER__
宏来获取将用于code_seg pragma的不同字符串。
const char *array = {".text$EBC002", ".text$EBC000", ".text$EBC003"};
#define CHANGE_FUNCTION_ORDER __pragma(code_seg(push, ????)) // how do I tell compiler to use string at __ COUNTER__ index from array
这个想法来自http://lallouslab.net/2018/03/26/shuffling-function-addresses-in-c-c-with-msvc/
答案 0 :(得分:2)
这是使用Boost.Preprocessor的解决方案:
#include <boost/preprocessor/tuple/elem.hpp>
#define CODE_SEGMENTS (".text$EBC002", ".text$EBC000", ".text$EBC003")
#define CHANGE_FUNCTION_ORDER __pragma(code_seg(push, BOOST_PP_TUPLE_ELEM(__COUNTER__, CODE_SEGMENTS))