Assembler / Говнокод #26232 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ

СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ
СТРАЙКЕР СОСЁТ МОЙ ХУЙ

xyu_100cm xyu_100cm, (Updated )

Комментарии (0)

Assembler / Говнокод #25867 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
#include <stdbool.h>

bool impl(bool a, bool b) // ->
{
    return (!a || b);
}

bool always_true(bool a, bool b)
{
    return (impl(a,b) == impl(b,a)) == (a == b); // ( (a -> b) = (b -> a) ) = (a = b) tautology
}

/*
GCC не хочет мне тавтологию оптимизировать!
https://godbolt.org/z/kgFMpR
always_true:
        movl    %esi, %eax
        xorl    %edi, %eax
        cmpb    %dil, %sil
        sete    %dl
        xorl    %edx, %eax
        ret
Но Clang может
https://godbolt.org/z/YcOat-
always_true:                            # @always_true
        movb    $1, %al
        retq
*/

ГОВНО!

j123123 j123123, (Updated )

Комментарии (46, +46)

Assembler / Говнокод #25491 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
Решил я значит от нехуй делать нарисовать свой пиксельный шрифт
(кому интересно - вот промежуточный результат https://i.imgur.com/2vIJoio.png)
и решил посмотреть, какие там вообще бывают под GNU/Linux редакторы для
шрифтов, и какие вообще шрифты бывают
Так вот, нашел я вот такую хрень http://mensis.sourceforge.net/overview.html
Вижу, что там какой-то ассемблер http://mensis.sourceforge.net/ttfcv-all.png или
байткод ебаный. Погуглил по этим говноинструкциям со скриншота:
Оказывается в TTF шрифтах есть встроенный тьюринг-полный ЯП, используемый
для всяких там подсказок, типа "куда дорисовать пиксель вот при таком-то условии"
и прочая подобная херота
А еще в шиндошс (до Windows 10) этот шрифтоговнобайткод интерпретировался в
пространстве ядра (ну тупыыые..) и разумеется таким образом удалось винду хакнуть
https://security.stackexchange.com/a/91395 (разве могло быть иначе?)

про шрифтоговнобайткод можно почитать например тут
https://docs.microsoft.com/en-us/typography/opentype/spec/tt_instructions
https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#instructions

На кой вообще хер делать тьюринг-полный язык для отрисовки глифов? Ну и раз вы его уже
делаете, то заебошьте там что-нибудь на основе LLVM байткода, чтоб JIT, или вообще все глифы
сразу компилировать в натив, или даже (чего мелочиться) под GPU. Типа мы хотим
нарисовать какую-то букву с размером 10 - вызываем функцию
drawA(10, bufptr, x, y); - рисуется десятого размера буква в буфер. И никаких непонятных
говнобайткодов. Четко и дерзко!

j123123 j123123, (Updated )

Комментарии (30, +30)

Assembler / Говнокод #25429 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
format pe gui 5.0

include 'win32ax.inc'

  _title db 'stackvar',0
  _class db '#32770',0

entry $
  sub esp,32
  mov esi,esp
  xor edi,edi
  mov ecx,$80000000
  mov eax,WS_VISIBLE+WS_OVERLAPPEDWINDOW
  invoke CreateWindowEx,edi,_class,edi,eax,ecx,ecx,ecx,ecx,edi,edi,edi,edi
  mov ebx,eax
  invoke SetWindowLong,ebx,GWL_WNDPROC,wnd_proc
  mov [esi],eax
  invoke SetWindowLong,ebx,GWL_USERDATA,esi
  invoke SendMessage,ebx,WM_INITDIALOG,edi,edi
  sub esp,32
  mov ebx,esp

msg_loop:
  invoke GetMessage,ebx,edi,edi,edi
  cmp eax,1
  jb app_exit
  jne msg_loop
  invoke DispatchMessage,ebx
  jmp msg_loop

wnd_proc:
  mov eax,[esp+8]
  cmp eax,WM_INITDIALOG
  je app_init
  cmp eax,WM_CLOSE
  je app_exit
  mov eax,[esp+4]
  invoke GetWindowLong,eax,GWL_USERDATA
  pop edx
  push dword [eax]
  push edx
  jmp [CallWindowProc]

app_init:
  mov eax,[esp+4]
  invoke SendMessage,eax,WM_SETTEXT,0,_title
  xor eax,eax
  ret

app_exit:
  invoke ExitProcess,edi

data import
  library\
    kernel32,'kernel32.dll',\
    user32,'user32.dll'
  include 'api\kernel32.inc'
  include 'api\user32.inc'
end data

Извращениям нет предела!
Переменные будем хранить в стэке)

chiacorp chiacorp, (Updated )

Комментарии (18, +18)

Assembler / Говнокод #25428 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
format pe gui 5.0

include 'win32ax.inc'

  _title db '1Kbyte window',0
  _class db '#32770',0

  old_wndproc dd 0

entry $
  xor edi,edi
  mov ecx,$80000000
  mov esi,$400000
  mov eax,WS_VISIBLE+WS_OVERLAPPEDWINDOW
  invoke CreateWindowEx,edi,_class,edi,eax,ecx,ecx,ecx,ecx,edi,edi,edi,edi
  mov ebx,eax
  invoke SetWindowLong,ebx,GWL_WNDPROC,wnd_proc
  mov [old_wndproc],eax
  invoke SendMessage,ebx,WM_INITDIALOG,edi,edi
  sub esp,32
  mov ebx,esp

msg_loop:
  invoke GetMessage,ebx,edi,edi,edi
  cmp eax,1
  jb app_exit
  jne msg_loop
  invoke DispatchMessage,ebx
  jmp msg_loop

wnd_proc:
  mov eax,[esp+8]
  cmp eax,WM_INITDIALOG
  je app_init
  cmp eax,WM_CLOSE
  je app_exit
  pop eax
  push [old_wndproc]
  push eax
  jmp [CallWindowProc]

app_init:
  mov eax,[esp+4]
  invoke SendMessage,eax,WM_SETTEXT,0,_title
  xor eax,eax
  ret

app_exit:
  invoke ExitProcess,edi

data import
  library\
    kernel32,'kernel32.dll',\
    user32,'user32.dll'
  include 'api\kernel32.inc'
  include 'api\user32.inc'
end data

Приветствуем!
Вот это говнокод однако?
...

chiacorp chiacorp, (Updated )

Комментарии (80, +80)

Assembler / Говнокод #25370 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 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) вывода в консоль является говнокодом?

chiacorp chiacorp, (Updated )

Комментарии (57, +57)