[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    у тебя волшебный некомпилирующийся пример. станцуй ритуальный танец с африканскими бусами и пример соберется сам собой.
     
    2 people like this.
  2. f04c3

    f04c3 New Member

    Joined:
    15 Jul 2007
    Messages:
    16
    Likes Received:
    3
    Reputations:
    0
    to >> А®ТеS
    " INVOKE " -> Это довольно удобная команда. Удобство ее заключается, во-первых, в том, что мы сможем забыть о добавке @N. Во-вторых, эта команда сама заботится о помещении передаваемых параметров в стек. Последовательность команд


    PUSH par1
    PUSH par2
    PUSH par3
    PUSH par4
    CALL NAME_PROC@N ; N-количество отправляемых в стек байт


    заменяется на


    INVOKE NAME_PROC, par4, par3, par2, par1

    Но надо помнить что в TASM отсутствует директива INVOKE .:)
     
  3. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    С какой книжки мона начаьт изучать асм???
     
  4. NetMan

    NetMan Elder - Старейшина

    Joined:
    9 Feb 2004
    Messages:
    121
    Likes Received:
    37
    Reputations:
    34
    z01b > см. вторую страницу этой же темы и ещё тут.
     
  5. tclover

    tclover nobody

    Joined:
    13 Dec 2005
    Messages:
    741
    Likes Received:
    682
    Reputations:
    287
    Да хоть с этой )
    http://www.wasm.ru/tools/22/opcodes.zip
    но лучше с Питера Абеля
     
  6. f04c3

    f04c3 New Member

    Joined:
    15 Jul 2007
    Messages:
    16
    Likes Received:
    3
    Reputations:
    0
    Ваще то нада начинать с протого ))) к примеру некоторые начинали с С++ и делфи а 3аканчивали машинными кода но не всегда асм рулит !!! В зависимости какой алгоритм нада сделать ведь далеко асм не есть эталоном програмирования !!!
     
  7. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    На досуге изучаю защищенный режим интела, возникло пока пара вопросов:
    Почему GS инициализируется нулем?
    Почему часть сегментных регистров имеют одинаковые значения?
    На васме говорится про два различных селектора, а на деле же получается три, как это объяснить?
     
  8. !_filin_!

    !_filin_! Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    86
    Likes Received:
    40
    Reputations:
    16
    точно ответ не помню, поэтому чтоб не врать ,советую тебе почитать книги по асму. В любой хорошой книге по асму в самом начале описуется архитектура процессора.
     
  9. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    Все?
    И что?
     
  10. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 iv. А ты не задавался вопросом. почему переход на защищенный режим идет через контроллер клавы?
    Походу дела в Intel тоже траву курят
     
  11. rus2k

    rus2k New Member

    Joined:
    10 Mar 2007
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Отцы программинга подскажите как превратить shellcode (в виде binary файла) в .exe файл.
     
  12. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    >>Отцы программинга подскажите как превратить shellcode (в виде binary файла) в .exe файл.

    Если теоретически то
    -сперва надо создать обьект ядра типа процесс с флагом CREATE_SUSPENDED что б приостановить его выполнение, это надо для редактирования его адрессного прространства
    -далее выделить память в удаленном адрессном пространстве спомощью VirtualAllocEx
    после скопировать этот массив байт(shellcode) WriteProcessMemory
    -и наконец продолжить прерванный ранее поток ResumeThread
    это в крадце и теоретически, если надо практически, то есть программка, которая это все иллюстрирует правда писал я ее на паскале по некоторым причинам, здесь ее выкладывать не буду по причине "не потеме топика" могу в пм или если кому нада забабахаю кратенькую статейку с кодом и коментариями и выложу где нибудь здесь
     
    #72 da_ff, 4 Aug 2007
    Last edited: 4 Aug 2007
  13. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    da_ff, Что вопрос, что ответ - и то и то полнейший бред
     
    4 people like this.
  14. da_ff

    da_ff Elder - Старейшина

    Joined:
    11 Jul 2006
    Messages:
    118
    Likes Received:
    22
    Reputations:
    26
    почему бред? я по крайней мере здоров (хотя родители говорят что меня скоро отправят в дурку)
    rus2k видимо расчитывает таким образом сделать криптор
    в выходной программе будет ввиде массива храниться зашифрованный код входной программы и расшифровываться и исполняться при запуске выходной
    по крайней мере я вижу только такой смысл
     
  15. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Всё очень просто - нужно самому заполнить структуру MZ_HEAD, PE_HEAD, TABLE_SECTION и сохранить всё в файл. Более проще будет - скомпилить на ASM маленькую прогу. которая не будет экспортировать несколько функций, а именно - GetProcAddress и LoadLibrary - это в зависимости от того, как юзает шел код библиотеки.
    ПОтом просто настрой заменить её внутренности на шеллкод и подправить некоторые значения. Типа: Размер секции виртуальный и реальный. И кол-во озушки требуемой для проги.
    Задачка проще некуда
    Вот код проги на FASM которую можно юзать как шаблон
    Code:
    format PE GUI
    include 'd:\coding\fasm\include\win32ax.inc'
    
    entry _start
    section '.idata' import data readable writeable
    library kernel32,'KERNEL32.DLL'
    include 'd:\coding\fasm\include\apia\kernel32.inc'
    
    section '.code' code readable writable executable
    _start:
    ret
    invoke LoadLibrary
    invoke GetProcAddress   
    
    после компила - достаточно запихать шелкод по смешению 200h и подправить некоторые структуры
     
    #75 slesh, 7 Aug 2007
    Last edited: 7 Aug 2007
  16. ToniKapuchon

    ToniKapuchon Elder - Старейшина

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    Вопрос новерное ламерский но всётаки спрошу... а как *.asm превратить в шеллкод
     
  17. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    http://www.shellcode.ru/index.php?name=News&file=print&sid=18
     
    2 people like this.
  18. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 ToniKapuchon - компельнуть в bin файл ;)
     
    5 people like this.
  19. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Вот выбрал для себя фасм =)) маленький и удобный вот :p

    но как делать фунции непонимаю

    в делфе
    function Msg(text : string):boolean;
    begin
    MessageBox(0,PChar(text),0,0);
    end;

    а как на фасм это перевести хз :((
     
  20. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    zl0y
    Рекомендую для начала почитать статьи на wasm.ru
    Также посмотри примеры программ В папке EXAMPLES FASM'а

    ЗЫ:
    PHP:
    public myproc
    myproc
    :
    тут тело функции
    mov eax
    ,результат
    ret
     
    #80 FeraS, 9 Aug 2007
    Last edited: 9 Aug 2007