Как создать exe и сознательно поместить часть кода в секцию "дата"

Тема в разделе "LANGS.C", создана пользователем artvy, 14 фев 2012.

  1. artvy

    artvy New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2012
    Сообщения:
    13
    Всем привет,

    Подскажите пожалуйста каким образом используя Вижуал Студию или ГЦЦ, неважно, любой компилятор устроит, можно в Виста/Вин7 создать исполняемый файл и сознательно поместить часть кода в секцию помеченную как данные. Цель создать экзешник который бы отсекала система безопасности Виндоус. Ну это все в кадре моего обучения реверсингу и ассемблеру и иже с ним. Вообщем есть такая задача. Буду благодарен за целевые статьи и материалы по теме.

    Спасибо за помощь.
     
  2. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    тащемта дополнил

    Код (Text):
    1. // codeseg.cpp : Defines the entry point for the console application.
    2. //
    3.  
    4. #include "stdafx.h"
    5.  
    6. #pragma comment (linker, "/MERGE:.MyFunc=.data")
    7. #pragma comment (linker, "/SECTION:.data,ERW")
    8.  
    9. #pragma code_seg(".MyFunc")
    10. bool function_to_store(char *str)
    11. {
    12.     printf(str);
    13.     return true;
    14. }
    15. #pragma code_seg()
    16.  
    17.  
    18. int _tmain(int argc, _TCHAR* argv[])
    19. {
    20.     function_to_store(argv[0]);
    21.     return 0;
    22. }
     
  3. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    либоже

    Код (Text):
    1. #pragma comment (linker, "/MERGE:.MyFunc=.data")
    2. #pragma comment (linker, "/SECTION:.data,ERW")
    3.  
    4. // аллок_текст держит только С декор
    5. extern "C" bool function_to_store1(char *str);
    6. extern "C" bool function_to_store2(char *str);
    7.  
    8. #pragma alloc_text(".MyFunc", function_to_store1, function_to_store2)
    9.  
    10. bool function_to_store1(char *str)
    11. {
    12.     printf(str);
    13.     return true;
    14. }
    15.  
    16. bool function_to_store2(char *str)
    17. {
    18.     printf(str);
    19.     return true;
    20. }
    21.  
    22. int _tmain(int argc, _TCHAR* argv[])
    23. {
    24.     function_to_store1(argv[0]);
    25.     function_to_store2(argv[0]);
    26.     return 0;
    27. }