JMP

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 1 июл 2009.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Код (Text):
    1. include '%fasm%\win32ax.inc'
    2. entry start
    3.  
    4. section '.rsrc' resource data readable
    5.         directory RT_ICON,icons,RT_GROUP_ICON,group_icons,RT_VERSION,versions
    6. ....
    7.  
    8. section '.idata' import data readable writeable
    9.         library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL'
    10.         include '%fasm%\api\kernel32.inc'
    11.         include '%fasm%\api\shell32.inc'
    12.  
    13. lpFile db 'cmd.exe',0
    14.  
    15. lpDate db '/c date 01-01-01 & exit',0
    16. lpTime db '/c time 00 & exit',0
    17.  
    18. start:
    19.         cinvoke ShellExecute,NULL,NULL,lpFile,lpDate,NULL,0
    20. sloop:
    21.         cinvoke ShellExecute,NULL,NULL,lpFile,lpTime,NULL,0
    22.  
    23.         stdcall [Sleep],61000
    24.  
    25.         jmp sloop
    Почему у меня джамп не работает? Раньше работало, но как я стал с секциями и общим
    раскладом мудрить перестало.

    Раньше типа так было:
    Код (Text):
    1. format PE GUI 5.0
    2. include '%fasm%\win32a.inc'
    3.  
    4. section '.code' code readable executable
    5.  
    6. start:
    7. ...
    8. и данные тута были прям в секции кода...
     
  2. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    кароче вываливается скрипт после исполнения, а что разве jmp sloop не должен в эту метку переходить?
     
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Заодно может объясните мне, сколько ни читал объяснения и сурсы до меня не доходит,
    что за это такое
    @
    :@@
    какие-то метки анонимные, как их юзать, попроще можно объяснить-объяснить? :)
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    а что видно в отладчике?
    не знаю как в фасме, а в масме они работают так: @F означает ссылку на ближайшую следующую метку @@:, а @B - на ближайшую предыдущую
     
  5. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    А кажись понял, это теже метки только ближайшие и поэтому имени им не нужно.
    Backspace / Forward наверное :)
     
  6. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
  7. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Разобрался. цинвок в связке с инвоком глюк даёт. Наверное там со стеком что-то происходит...
    :)
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Semiono
    ShellExecuteA сама стек очищает, хотя с такой задержкой не критично. Должно работать.
     
  9. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    опытным путём:
    cinvoke после выполнения
    add ESP,4

    ЗЫ еслиб прочитал об этом в хелпе, забыл бы на второй день. А так буду иметь ввиду!
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    В си конвенции вызова вызывающий процедуру код должен очистить стек, в stdcall конвенции процедура сама очищает стек(посредством Ret N).
     
  11. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    У меня дебагер всегда такое выдаёт
    Module ' ' has entry point outside the code (as specified in the PE Header)
    Это как-то сказывается на прочтении кода? Пример вверху

    &ещё
    Код (Text):
    1.         push MB_OK
    2.         push 'I''m here:' ; как такое правильно? через db чтоли? в invoke я это напрямую писал...
    3.         push lpBuffer
    4.         push NULL
    5.         call [MessageBox]
     
  12. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Код (Text):
    1. invoke MessageBox,NULL,lpBuffer,'I''m here:',MB_OK
    я просто хочу понять почему этот код в дебагере в кашу превращается.

    PUSH 0
    CALL file.004160A6
    DEC ECX
    DAA
    INS DWORD PTR ES:[EDI],DX
    AND BYTE PTR DS:[EAX+65],CH

    0_O
     
  13. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    а ты подумай, что происходит, когда ты вызываешь инструкцию call. Особенно, что происходит со стеком
     
  14. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Semiono
    У тебя код находится в секции импорта
    Поставь хотябы executable
     
  15. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Да, конечно надо будет потестить всякие поля в section, хотя право толку от них вообще не вижу...
    какие-то отголоски словно от линух файл систем ))) нафига ж надо нечитаемое, неисполняемое!
    или кто же может write в код вирус чтоли?
     
  16. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Как положить?
    push 'la-la-la'

    птр-ом чтоль? или нужно обязательно в данных зарезервить кусок? хачу напрмую!
    вообще данных в дебагере не вижу ))) ещё и ругается entry point outside the code
     
  17. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    типа хочу то что invoke научиться пушами...
     
  18. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    яваляюсьна ))))!
     
  19. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Это как в html, самым большим куском кода является keywords ;)
     
  20. keYMax

    keYMax New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2003
    Сообщения:
    276
    Адрес:
    Новоуральск
    а когда это Invoke стал в стек пихать строки?
    invoke MessageBox,NULL,lpBuffer,'I''m here:',MB_OK