Добавления кода в ехе файл.

Тема в разделе "WASM.WIN32", создана пользователем masm_the_best, 24 июл 2005.

  1. masm_the_best

    masm_the_best New Member

    Публикаций:
    0
    Регистрация:
    24 июл 2005
    Сообщения:
    3
    У меня есть исходник добавления кода в ехе. Но как мне записать сам код:

    push 0

    push 0

    push offset bufer ;!!!!!!!!!!!!!!!!

    push 0

    mov eax,77d7050bh; MessageBox

    call eax

    как надо ето записать у cуществующий eхе , веть переменной bufer там не существует.
     
  2. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    поищи программку topo v1.2, с помощью неё можно добавить секцию в файл или найти неиспользуемое место в файле, далее с помощью олли или hiew (или ещё как-нибудь) пишешь свой код, а потом перенаправляешь
     
  3. DeHunter

    DeHunter New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    80
    Адрес:
    Ukraine/Kiev
    Нужно найти секцию данных и там в место которое образовалось за счёт выравнивания секций вбить эти данные.

    Или добавить в последнюю секцию. Далее просто вычеслить аддресс.
     
  4. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    masm_the_best

    Вот тебе здесь понадобяться техники программирования в шел код стиле.



    Если у тебя код такой,
    Код (Text):
    1.  
    2. push 0
    3. push 0
    4. push offset bufer ;!!!!!!!!!!!!!!!!
    5. push 0
    6. mov eax,77d7050bh; MessageBox
    7. call eax
    8.  




    делай так


    Код (Text):
    1.  
    2. jmp x:
    3. bufer db "The Passion Of Code Laboratory",0
    4. x:
    5. push 0
    6. push 0
    7. lea eax,[ebp+bufer]
    8. push eax ;!!!!!!!!!!!!!!!!
    9. push 0
    10. mov eax,77d7050bh; MessageBox
    11. call eax
    12.  




    В EBP - дельта смещение. Как его вычислять узнаешь из моей статьи.

    Если всеравно чего-нибудь не понятно мыль bill_tpoc@mail.ru
     
  5. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    masm_the_best
    Код (Text):
    1. mov eax,77d7050bh; MessageBox


    надеюсь, у тебя этот адрес не прошит намертво?

    т.к. на разных машинах адреса будут разные



    дельту можно вычислить, например, так:
    Код (Text):
    1.  
    2. call Delta
    3. ; здесь могут быть данные
    4. Delta:
    5. pop ebp
    6. sub ebp, offset Delta
    7.  
     
  6. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    а можно и так:

    push 0

    push 0

    call x:

    bufer db "Message",0

    x:

    push 0

    mov eax,77d7050bh; MessageBox

    call eax
     
  7. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    А вот здесь небольшая ошибка



    стоит писать

    lea eax,[ebp+offset bufer]
     
  8. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136


    This only work on Windows XP. This code will crashes in Windows 98.
     
  9. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    нужно всего лишь полазить по импорту программы, она наверняка использует MessageBox, и оттуда прыгать
     
  10. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    yuzvir

    Немного странно от Вас такое слышать.

    Это правильно на 100%. Можете проверить в своем MASM.
     
  11. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    GPcH

    Совершенно верно! Да и то, важно что на какой-то конкретной на какой XP, а не на всех!!!
     
  12. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    Bill_Prisoner

    Честно говоря никогда не пробовал так делать ...

    в SectionAdd от Freddy K

    видно, что написано так:
    Код (Text):
    1.  
    2.     lea     eax, [ebp+OFFSET szExitProcess]
    3.     CALL    GetProcAddr, [ebp+dwKernelBase], eax
    4.     OR      EAX, EAX
    5.     JZ      QUIT
    6.     MOV     [ebp+_ExitProcess], EAX
    7.  


    Вот я и списал все на опечатку.
     
  13. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    в MASM'е писать можно и так и так
    Код (Text):
    1.  
    2.  mov eax, [ecx + tx_1]
    3.  mov eax, [ecx + OFFSET tx_1]
    4.  


    и наглядней с OFFSET'ом, но MASM иногда глючит, поэтому рекомендую OFFSET не писать.