есть код в котором используется оператор switch, компилирую в cl.exe от Microsoft Visual Studio 2005(8), для оператора switch и последующих case, компилятор генерирует таблицу джампов, которую помещает после функции в которой используеься сам switch. функцию я инжектирую в чужой процесс..фукнция выделяется при помощи void start_func(void){} и void end_func(void){} в начале и конце соответсвенно. проблема в том что при разборе кода сгенерированного компилятором присутствуют джампы, ссылающиеся на сгенерированную таблицу. есть ли флаг для cl.exe или может быть другой компилятор, которому можно явно сказать не генерировать таблицу джампов для switch... case ? флаг /Os нипомогает а что плохого в том что джампы? Ответ: есть функция которая переносится в чужой процесс для того чтобы знать сколько переносить в начале и конце ставятся пустые функции stat_func и end_func - они как метки, все что между ними переносится в чужой процесс таким образом мы можем определить начало откуда переносить и размер сколько переносить при компиляции кейсов компилятор вставляет таблицу переходов после end_func тоесть если теперь перенести функцию в чужой процесс считай что часть ее останется не перенесенной и соответственно функционал свой она потеряет Почему не асемблеровские вставки? на кейсе многовато кода... всмысле выбор большой... ну там порядка 60 кейсов.... представь это все на асм перегонять... -- да это не код, а таблица переходов, в коде на нее ссылки идут, как на сегмент данных jmp ds:off_407BC4[eax*4]
fatall Один может попробовать #pragma code_seg. Т.е. 'func_start' запихнуть в секцию ".text$FUA", 'func_end' – в ".text$FUZ", а нужные функции между ними – в ".text$FUU".