- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
format pe console 5.0
entry start
include 'win32ax.inc'
SLEEP=1000
section '.data' data readable
_hello db 'Hello "https://www.govnokod.ru/"!',13,10,0
_conout db 'CONOUT$',0
align 8
_conoutnt du '\??\CONOUT$',0
section '.data?' data readable writeable
bytes_write dd ?
houtput dd ?
length dd ?
section '.text' code readable executable
start:
call _novice
invoke Sleep,SLEEP
call _advanced
invoke Sleep,SLEEP
call _psycho
invoke Sleep,SLEEP
invoke ExitProcess,0
_novice:
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [houtput],eax
invoke lstrlen,_hello
mov [length],eax
invoke WriteConsole,[houtput],_hello,[length],bytes_write,0
ret
_advanced:
invoke CreateFileA,_conout,GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
mov [houtput],eax
invoke lstrlen,_hello
mov [length],eax
invoke WriteFile,[houtput],_hello,[length],bytes_write,0
invoke CloseHandle,[houtput]
ret
_psycho:
push ebx
sub esp,40
mov ebx,esp
mov word[ebx+24],22
mov word[ebx+26],24
mov dword[ebx+28],_conoutnt
mov dword[ebx+0],24
mov dword[ebx+4],0
lea eax,[ebx+24]
mov dword[ebx+8],eax
mov dword[ebx+12],$00000040
mov dword[ebx+16],0
mov dword[ebx+20],0
lea eax,[ebx+32]
invoke NtCreateFile,houtput,$40100080,ebx,eax,0,0,0,1,$60,0,0
invoke lstrlen,_hello
mov [length],eax
lea eax,[ebx+32]
invoke NtWriteFile,[houtput],0,0,0,eax,_hello,[length],0,0
invoke NtClose,[houtput]
add esp,40
pop ebx
ret
section '.import' data import readable
library\
ntdll,'ntdll.dll',\
kernel32,'kernel32.dll'
import ntdll,\
NtClose,'NtClose',\
NtCreateFile,'NtCreateFile',\
NtWriteFile,'NtWriteFile'
include 'api\kernel32.inc'
section '.reloc' fixups data readable discardable
Интересно какой из методов (_novice, _advanced, _psycho) вывода в консоль является говнокодом?
O4epegHou_nemyx 10.02.2019 21:54 # +1
Мне вот, кстати, непонятно, почему Томаш, написав ассемблер с таким классным препроцессором, сам не юзает макросы в исходниках fasm, и даже таблицы импорта руками собирает?
chiacorp 10.02.2019 22:09 # +1
bormand 10.02.2019 22:10 # +1
O4epegHou_nemyx 10.02.2019 22:24 # +1
Ассемблерщики любят ручками поработать, любят сэкономить лишний байт, лишний проход и лишнюю милисекунду конпеляции. Именно поэтому я за "assembler".
bormand 10.02.2019 22:28 # +1
O4epegHou_nemyx 10.02.2019 22:51 # +1
Надо бы придумать fasm++, с классами, шаблонами, констэкспрами и прочей хуйнёй и наметушить огромную библиотеку, чтобы программы конпелировались по джва часа.
bormand 10.02.2019 22:22 # 0
chiacorp 10.02.2019 22:23 # +1
invoke stdcall
cinvoke ccall
bormand 10.02.2019 22:25 # 0
chiacorp 10.02.2019 22:27 # 0
bormand 10.02.2019 22:29 # 0
З.Ы. Я просто никогда invoke в асмах не юзал, всегда push/mov вручную писал подглядывая в соглашение о вызовах.
O4epegHou_nemyx 10.02.2019 22:39 # 0
O4epegHou_nemyx 10.02.2019 23:10 # +3
chiacorp 10.02.2019 23:12 # 0
O4epegHou_nemyx 10.02.2019 23:17 # 0
bormand 11.02.2019 00:18 # 0
O4epegHou_nemyx 11.02.2019 04:27 # 0
guest8 11.02.2019 00:05 # −999
O4epegHou_nemyx 11.02.2019 00:07 # 0
CO6AKA_CTPALLIHA9I 11.02.2019 02:51 # 0
O4epegHou_nemyx 11.02.2019 04:45 # +1
guest8 04.09.2019 03:24 # −999
guest8 11.02.2019 00:11 # −999
bormand 11.02.2019 00:11 # 0
З.Ы. На английской. На русской только 32-битные перевели.
O4epegHou_nemyx 11.02.2019 04:46 # 0
raMagPuJI 03.10.2019 03:12 # 0
куда ссал?
bormand 10.02.2019 21:59 # 0
Блин, я сначала подумал, что это парсер ГК на асме...
> _psycho
А напрямую через syscall, как недавно для линукса делали, тогда кто? :)
O4epegHou_nemyx 10.02.2019 22:02 # 0
_shizo
bormand 10.02.2019 22:03 # 0
chiacorp 10.02.2019 23:10 # 0
_shizo:
push ebx edi
xor edi,edi
sub esp,40
mov ebx,esp
mov word[ebx+24],22
mov word[ebx+26],24
mov dword[ebx+28],_conoutnt
mov dword[ebx+0],24
mov dword[ebx+4],edi
lea eax,[ebx+24]
mov dword[ebx+8],eax
mov dword[ebx+12],$00000040
mov dword[ebx+16],edi
mov dword[ebx+20],edi
lea eax,[ebx+32]
push edi
push edi
push $60
push 1
push edi
push edi
push edi
push eax
push ebx
push $40100080
push houtput
push edi
mov eax,$55
mov edx,$775BEA50
call edx
add esp,$30;$2C
invoke lstrlen,_hello
mov [length],eax
lea eax,[ebx+32]
push edi
push edi
push [length]
push _hello
push eax
push edi
push edi
push edi
push [houtput]
push edi
mov eax,$1A0008
mov edx,$775BEA50
call edx
add esp,$28
push [houtput]
push edi
mov eax,$3000F
mov edx,$775BEA50
call edx
add esp,$8
add esp,40
pop edi ebx
ret
gost 10.02.2019 23:21 # −1
> call edx
Сла́бо.
bormand 10.02.2019 23:26 # 0
З.Ы. Или можно call + systenter? Я просто не помню, что делает переходник после возврата из сисколла. Если там просто ret - то прокатит.
O4epegHou_nemyx 10.02.2019 23:30 # +1
O4epegHou_nemyx 10.02.2019 23:34 # 0
guest8 11.02.2019 00:03 # −999
bormand 11.02.2019 00:29 # +1
O4epegHou_nemyx 11.02.2019 04:30 # 0
guest8 20.04.2020 18:05 # −999
gost 11.02.2019 00:33 # 0
bormand 11.02.2019 00:39 # 0
gost 11.02.2019 00:43 # 0
bormand 11.02.2019 00:47 # 0
З.Ы. Но я х.з. насчёт стабильности виндовых сисколлов. Надо исследовать разные версии венды. Так то твой способ надёжнее.
gost 11.02.2019 00:53 # 0
Флаг на 0x7FFE0308 — какое-то поле в KUSER_SHARED_DATA, видимо, поддерживает ли процессор «syscall».
А вот добрые люди ведут список сисколлов: https://j00ru.vexillium.org/syscalls/nt/64/
Kakou-mo_nemyx 11.02.2019 07:43 # +1
Декомпилировал ntdll от «Windows 95». Оказывается, на не-NT сделали шиворот-навыворот: ntdll импортирует функции из kernel32. Это примерно как на заборе слово «МЕЛ» написать...
gost 11.02.2019 00:47 # 0
guest8 04.09.2019 03:26 # −999
CBO6OgHblu_nemyx 04.09.2019 10:06 # 0
chiacorp 10.02.2019 22:07 # 0
O4epegHou_nemyx 10.02.2019 22:01 # +2
> $60
Паскалист?)
chiacorp 10.02.2019 22:14 # 0
gost 11.02.2019 00:32 # 0
gost 11.02.2019 00:33 # 0
gost 11.02.2019 00:33 # 0
gost 11.02.2019 00:34 # 0
bormand 11.02.2019 00:37 # 0
gost 11.02.2019 00:41 # 0
O4epegHou_nemyx 11.02.2019 04:48 # 0