Код (Text): include '%fasm%\win32ax.inc' entry start section '.rsrc' resource data readable directory RT_ICON,icons,RT_GROUP_ICON,group_icons,RT_VERSION,versions .... section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL' include '%fasm%\api\kernel32.inc' include '%fasm%\api\shell32.inc' lpFile db 'cmd.exe',0 lpDate db '/c date 01-01-01 & exit',0 lpTime db '/c time 00 & exit',0 start: cinvoke ShellExecute,NULL,NULL,lpFile,lpDate,NULL,0 sloop: cinvoke ShellExecute,NULL,NULL,lpFile,lpTime,NULL,0 stdcall [Sleep],61000 jmp sloop Почему у меня джамп не работает? Раньше работало, но как я стал с секциями и общим раскладом мудрить перестало. Раньше типа так было: Код (Text): format PE GUI 5.0 include '%fasm%\win32a.inc' section '.code' code readable executable start: ... и данные тута были прям в секции кода...
Заодно может объясните мне, сколько ни читал объяснения и сурсы до меня не доходит, что за это такое @ :@@ какие-то метки анонимные, как их юзать, попроще можно объяснить-объяснить?
а что видно в отладчике? не знаю как в фасме, а в масме они работают так: @F означает ссылку на ближайшую следующую метку @@:, а @B - на ближайшую предыдущую
А кажись понял, это теже метки только ближайшие и поэтому имени им не нужно. Backspace / Forward наверное
опытным путём: cinvoke после выполнения add ESP,4 ЗЫ еслиб прочитал об этом в хелпе, забыл бы на второй день. А так буду иметь ввиду!
В си конвенции вызова вызывающий процедуру код должен очистить стек, в stdcall конвенции процедура сама очищает стек(посредством Ret N).
У меня дебагер всегда такое выдаёт Module ' ' has entry point outside the code (as specified in the PE Header) Это как-то сказывается на прочтении кода? Пример вверху &ещё Код (Text): push MB_OK push 'I''m here:' ; как такое правильно? через db чтоли? в invoke я это напрямую писал... push lpBuffer push NULL call [MessageBox]
Код (Text): 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
Да, конечно надо будет потестить всякие поля в section, хотя право толку от них вообще не вижу... какие-то отголоски словно от линух файл систем ))) нафига ж надо нечитаемое, неисполняемое! или кто же может write в код вирус чтоли?
Как положить? push 'la-la-la' птр-ом чтоль? или нужно обязательно в данных зарезервить кусок? хачу напрмую! вообще данных в дебагере не вижу ))) ещё и ругается entry point outside the code