Чистый ассемблер (без *.inc и *.lib файлов)

Тема в разделе "WASM.ASSEMBLER", создана пользователем 777user777, 26 янв 2011.

  1. 777user777

    777user777 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2010
    Сообщения:
    109
    Всем доброго времени суток. Решил написать программу на ассемблере без использования *.inc и *.lib файлов - сделать заголовки,таблицу импорта и т.п. вручную...
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    777user777
    пиши, че от нас надо? или за тебя написать, так в фасмовских примерах было "за тебя написано".
     
  3. 777user777

    777user777 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2010
    Сообщения:
    109
    Нужны статьи,книги,и т.п.
     
  4. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    А смысл? От нечего делать? При входе в программу в стеке лежит адрес на kernel32.dll в памяти. Во-о-от сядешь полистаешь память, найдёшь mz заголовок, далее pe заголовок, далее по имени функции найдёшь GetModuleHandle, LoadLibrary, GetModuleHandle, GetProcAdress(если хочешь официальную использовать, а не самопальную), ну и сиди радуйся. Во загонит кто-нибудь твою программу в ida, а тама фигня, импорта нэту. И всё же смысл все это делать, линовать таблицу импорта или же вон с памятью играть. Писать проги надо как легче и быстрее, а не из нечего делать.
     
  5. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    ну если нужно что-то по устройству таблицы импорта, то можно почитать в описании pe файлов
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.321
    в хексредакторе штоль?) вы меня умиляете просто... я могу понять смысл использовать либы для формирования таблицы импорта, я могу понять смысл полного отказа от таблицы импорта в пользу собственноручного поиска адреса функции... но делать таблицу импорта вручную - это имхо брееееееед)))
     
  7. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Код (Text):
    1. ; Example of making 32-bit PE program as raw code and data
    2.  
    3. format PE GUI
    4. entry start
    5.  
    6. section '.text' code readable executable
    7.  
    8.   start:
    9.  
    10.     push    0
    11.     push    _caption
    12.     push    _message
    13.     push    0
    14.     call    [MessageBoxA]
    15.  
    16.     push    0
    17.     call    [ExitProcess]
    18.  
    19. section '.data' data readable writeable
    20.  
    21.   _caption db 'Win32 assembly program',0
    22.   _message db 'Hello World!',0
    23.  
    24. section '.idata' import data readable writeable
    25.  
    26.   dd 0,0,0,RVA kernel_name,RVA kernel_table
    27.   dd 0,0,0,RVA user_name,RVA user_table
    28.   dd 0,0,0,0,0
    29.  
    30.   kernel_table:
    31.     ExitProcess dd RVA _ExitProcess
    32.     dd 0
    33.   user_table:
    34.     MessageBoxA dd RVA _MessageBoxA
    35.     dd 0
    36.  
    37.   kernel_name db 'KERNEL32.DLL',0
    38.   user_name db 'USER32.DLL',0
    39.  
    40.   _ExitProcess dw 0
    41.     db 'ExitProcess',0
    42.   _MessageBoxA dw 0
    43.     db 'MessageBoxA',0
    44.  
    45. section '.reloc' fixups data readable discardable   ; needed for Win32s
    пример из фасма, если хотите еще и заголовок вручную, пишем в raw курим маны по PE формату, коих тысячи, и еще в школе получаем одни пятерки по математике.
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    777user777
    Я пишу заголовок, импорт, ресурсы вручную, чтобы файл имел минимальный размер, стандартный линкер это не сделает, а если заголовок, импорт, ресурсы стандартные -- зачем огород городить?
     
  10. 777user777

    777user777 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2010
    Сообщения:
    109
    а счего ты взял что мне нужны стандартные заголовок,импорт, и т.п. Мне самому нужно чтоб размер был меньше.

    кстати пишу на масме.
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    777user777
    Тогда откажись от импорта совсем, собери данные и код в одну секцию, уменьши filealign до 4 байт, примеры как это делать на MASM и NASM есть в Сам себе Iczelion. На ХР это всё работает. Не знаю, как это должно выглядеть на 7 или Vista, скорее всего, придется учитывать местные условия. А вот от INC-файлов (windows.inc etc.) отказываться не стоит, они на размер никак не влияют...
     
  12. LShadow77

    LShadow77 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    36
    Ребят, а вы чё покурили накануне? )))))
     
  13. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    LShadow77
    некролюб детектед
     
  14. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    777user777

    напишите - откройте хекс редактор и напишите код инструкции ret сохраните как com файл вот и будет вам счастье

    вы может просто не знаете зачем inc и lib нужны ??? так там ничего сверх секретного нет - в первых сплошь константы и прототипы во вторых немножко стандартного кода

    никто не мешает вам отказаться от них - из первых можно повыдрать нужные вам константы, да и код что находиться во вторых тоже можно воспроизвести самому - никому это уже не интересно, кому было хексредакторвми и в отладчиках все увидели

    вы видимо пишите свою первую программу можно сказать свой первый килобайт кода, как только размер вашего кода перевалит через некоторую отметку вы поймете ценность всего хозяйства от которого щас пытаетесь отказаться - мой вам совет разберитесь лучше как это использовать
     
  15. LShadow77

    LShadow77 New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    36
    Могу подкинуть сумасшедшую идейку (сам уже частично реализовал): BAT-файл, внутри которого спрятан EXE'шник :)
    При запуске, данный файл с помощью команды ECHO построчно копирует машинные коды в досовский COM-файл (используются операторы перенаправления вывода > и >>), запускает его, а тот в свою очередь открывает BAT-файл, вырезает из него EXE'шник, декодирует его, сливает его на диск и возвращает управление в BAT-файл (int 20h), который в свою очередь, запускает этот экзешник (команда START)!
    Надо избавиться от нулевых байтов в батике, поэтому экзешник и должен быть зашифрован. DOS'овский код удобно набивать в HEX/ASM-редакторе HIEW32.
    Ну чё, курим дальше? :)
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    LShadow77
    кто тут еще курил большой вопрос )
     
  17. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    ваша ненавязчивая реклама доставляет
     
  18. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Благословляю тебя сын мой ....


    Мне нужны твоя одежда, ботинки, и мотоцикл (c)
     
  19. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    http://www.phreedom.org/solar/code/tinype/
     
  20. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Rockphorr
    тот цикл давно пора в виде цикла статей оформить.