Непонятный байт! :(

Тема в разделе "WASM.WIN32", создана пользователем EvilsInterrupt, 18 сен 2004.

  1. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Решился изучать программирование на асме под win32.

    Просьба помочь.



    Есть код:

    .386

    .model flat,stdcall



    ; prototypes

    ExitProcess proto uExitCode : dword

    include c:\utils\masm32\include\kernel32.inc



    ; librarys

    includelib c:\utils\masm32\lib\kernel32.lib



    .data



    .code

    natali:

    ; xor eax,eax

    ; push eax

    ; call ExitProcess

    invoke ExitProcess,0

    end natali

    ;-------------------------------------------

    Два случая:

    1)

    first_call.exe:

    .00401000: 33C0 xor eax,eax

    .00401002: 50 push eax

    .00401003: E800000000 call ExitProcess ;kernel32.dll

    .00401008: FF2500204000 jmp ExitProcess ;kernel32.dll

    2)

    first_invoke.exe:

    .00401000: 6A00 push 000

    .00401002: E801000000 call ExitProcess ;kernel32.dll

    .00401007: CC int 3

    .00401008: FF2500204000 jmp ExitProcess ;kernel32.dll



    Его точку входа определил по AdressOfEntryPointer+ImageBase.

    смотрел через Hiew.



    Не пойму какого хрена во втором случае в .00401007 стоит 0cch?



    Я его точно в отладчик не запускал, exe`шник создал с помощью

    masm32 v5.12.
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Наконец-то :)







    Гм. а исходник один :dntknw:







    Смещения сам выставил ?
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    секция импорта выровнена по дв слову, а между секциями могут быть случайные байты, которые в это время в памяти были (я так думаю ;)
     
  4. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Shoo

    логично, а можешь че нить такое сам на бацать?



    2)Мне понравились ключи дла ml.exe - /Fl, /Sg, а как их вкрутить в:

    @echo off

    ml /c /coff /Cp first.asm > first_error.txt

    link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib first.obj >> first_error.txt

    del first.obj
     
  5. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    bagrus,по поводу кода:



    .386

    .model flat,stdcall

    option casemap:none

    include c:\utils\masm32\include\kernel32.inc

    includelib c:\utils\masm32\lib\kernel32.lib

    .data

    .code

    natali:

    invoke ExitProcess,0

    end natali



    2.bat:

    @echo off

    ml /c /coff /Cp /Sg /Sn /Fl2.lst 2.asm > 2_error.txt

    link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib 2.obj >> 2_error.txt

    del 2.obj



    в лиснинге этого 0cch нет, но как токо грузишь его в hiew сразу

    появляется int 3 и потом jmp dword ... :dntknw: см. выше.



    ЗЫ: До меня дошло как делать листинг, но как убрать из него вывод

    всех инклудов к примеру kernel32.inc, windows.inc? Уж больно они

    листинг маленьким делають :)



    А на решение изучать винду повлияло то, что чуть ли не каждый знако-

    мый кодит ЯВУ такие проги себе и стоко проблем для себя на компе ре-

    шает. А я вот юзверь решил в совокупности им маленькие зверьки под-

    кидывать, который в каждом exe`шнике PE/0/0 будут делать PE/1/1 им

    ведь в лом изучать PE формат. Я как то поменял сдури полдня потом ду-

    мал, а че это у меня файл не воркает? :)))
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    EvilsInterrupt > Не пойму какого хрена во втором случае в .00401007 стоит 0cch ... в лиснинге этого 0cch нет

    Листинг генерируется только для исходного текста.



    shoo > секция импорта выровнена по дв слову, а между секциями могут быть случайные байты

    Секция действительно выровнена, но байты не случайные. 0CCh используется для предотвращения выполнения программы. Представьте, что в конце программы нет вызова ExitProcess'а программа продолжит выполняться и дойдет до вызова импортируемых функции.



    EvilsInterrupt

    как убрать из него вывод всех инклудов

    Читай документацию по ассемблеру, например, для masm'а можно использовать директивы .nolist/.xlist и .list для исключения любых кусков программы из листинга.
    Код (Text):
    1. ...
    2. .nolist
    3. include windows.inc
    4. include <other>
    5. .list
    6. ...
     
  7. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    А что, выравнивание кто-то уже отменил?
     
  8. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    >директивы .nolist/.xlist и .list для исключения любых

    честно скажу в моей инфе я этого не видел, но спасибо что ткнул пальцем



    Volodya

    Выравнивание? но почему не нулями?
     
  9. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Пардон за вопрос, плохо прочитал ответ q_q
     
  10. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine




    1.если очень нужно - канэшна магу, только не быстро - на работе хотят чтобы я работал (странные люди ;) дома - женщины (с асмом не совместимы) остается только рано утром, пока они спят ;)

    2.2 года эпизодически изучаю асм и вин32, но такая проблема меня не пекла (думаю, это вопрос второго этапа ;)

    3.как меня достал буратино!!!!!! 3 недели подряд каждый вечер читать ребенку одно и тоже!!!!!! (другое не катит ;)