- 1
- 2
https://habr.com/post/431534/
Проблемные личности среди разработчиков
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://habr.com/post/431534/
Проблемные личности среди разработчиков
+1
// HooksList.h
#define PPCAT_NX(A, B) A ## B
#define PPCAT(A, B) PPCAT_NX(A, B)
#ifdef HOOKS_DEFS
using namespace NtStructs;
#define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
typedef return_type(WINAPI *PPCAT(hook_name, _ptr))(__VA_ARGS__); \
return_type WINAPI PPCAT(hook_name, _hook)(__VA_ARGS__); \
extern PPCAT(hook_name, _ptr) PPCAT(hook_name, _orig);
#elif defined(HOOKS_LIST)
#define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
{module_name, #hook_name, (LPVOID)PPCAT(hook_name, _hook), (LPVOID*)&PPCAT(hook_name, _orig), enabled},
#elif defined(HOOKS_TYPES_DEF)
using namespace NtStructs;
#define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
typedef return_type(WINAPI *PPCAT(hook_name, _ptr))(__VA_ARGS__); \
return_type WINAPI PPCAT(hook_name, _hook)(__VA_ARGS__);
#elif defined(ORIGINAL_FUNCTIONS_TABLE_DEF)
#define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
PPCAT(hook_name, _ptr) hook_name;
#elif defined(ORIGINAL_FUNCTIONS_TABLE_FILL)
#define API_HOOK_DEF(module_name, hook_name, return_type, enabled, ...) \
(ORIGINAL_FUNCTIONS_TABLE_NAME).hook_name = PPCAT(hook_name, _orig);
#else
#define API_HOOK_DEF(...)
#endif
// NtCreateFile
API_HOOK_DEF(L"ntdll", NtCreateFile, NTSTATUS, true,
PHANDLE FileHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
PIO_STATUS_BLOCK IoStatusBlock,
PLARGE_INTEGER AllocationSize,
ULONG FileAttributes,
ULONG ShareAccess,
ULONG CreateDisposition,
ULONG CreateOptions,
PVOID EaBuffer,
ULONG EaLength)
// NtDeleteFile
API_HOOK_DEF(L"ntdll", NtDeleteFile, NTSTATUS, true,
POBJECT_ATTRIBUTES ObjectAttributes)
// И так далее
// В .cpp:
static HookEntry hookEntries[] = {
#define HOOKS_LIST
#include "HooksList.h"
#undef HOOKS_LIST
};
// ...
static OriginalFunctions originalFuncsTable;
#define ORIGINAL_FUNCTIONS_TABLE_FILL 1
#define ORIGINAL_FUNCTIONS_TABLE_NAME originalFuncsTable
#include "HooksList.h"
#undef ORIGINAL_FUNCTIONS_TABLE_NAME
#undef ORIGINAL_FUNCTIONS_TABLE_FILL
Мокросы!..
+3
: ENUM> ( -- ) ;
: <ENUM ( xt n -- )
BEGIN
BEGIN
>IN @ BL WORD DUP C@ 0=
WHILE
2DROP REFILL 0= IF EXIT THEN
REPEAT
FIND SWAP ['] ENUM> = AND IF DROP 2DROP EXIT THEN
>IN !
2DUP SWAP EXECUTE
1+
AGAIN
;
WORDLIST CONSTANT ASSEMBLER
GET-ORDER ASSEMBLER SWAP 1+ SET-ORDER DEFINITIONS
HEX
VARIABLE 'BYTES
: B, ( c -- ) C, 1 'BYTES @ +! ;
: W, ( u -- ) DUP B, 8 RSHIFT B, ;
: DB" ( "ccc<quote>" -- c-addr u )
[CHAR] " PARSE SWAP OVER HERE >R HERE SWAP DUP ALLOT CMOVE
R> SWAP DUP 'BYTES @ +!
;
: W! ( u addr -- ) 2DUP C! SWAP 8 RSHIFT SWAP 1+ C! ;
' CONSTANT 0 <ENUM AX CX DX BX SP BP SI DI ENUM>
' CONSTANT 0 <ENUM AL CL DL BL AH CH DH BH ENUM>
: MEM ( u "<spaces>name" -- ) DUP 18 AND 3 RSHIFT >R 7 AND R> 2CONSTANT ;
' MEM 0 <ENUM
[BX+SI] [BX+DI] [BP+SI] [BP+DI] [SI] [DI] [W] [BX]
[BX+SI]+B [BX+DI]+B [BP+SI]+B [BP+DI]+B [SI]+B [DI]+B [BP]+B [BX]+B
[BX+SI]+W [BX+DI]+W [BP+SI]+W [BP+DI]+W [SI]+W [DI]+W [BP]+W [BX]+W
ENUM>
:NONAME ( reg1 reg2 -- ) 3 LSHIFT OR B, ;
:NONAME ( reg off u -- ) ROT 3 LSHIFT OR B, W, ;
:NONAME ( reg off u -- ) ROT 3 LSHIFT OR B, B, ;
:NONAME ( reg off 6 | reg u -- )
DUP 6 = IF
ROT 3 LSHIFT OR B, W,
ELSE
SWAP 3 LSHIFT OR B,
THEN
;
CREATE MOD , , , ,
3 CONSTANT REG
: -- ( opcode "<spaces>name" -- ) CREATE C, DOES> C@ B, CELLS MOD + @ EXECUTE ;
' -- 0 <ENUM ADD<B ADD<W ADD>B ADD>W ENUM>
' -- 8 <ENUM OR<B OR<W OR>B OR>W ENUM>
' -- 10 <ENUM ADC<B ADC<W ADC>B ADC>W ENUM>
' -- 18 <ENUM SBB<B SBB<W SBB>B SBB>W ENUM>
' -- 20 <ENUM AND<B AND<W AND>B AND>W ENUM>
' -- 28 <ENUM SUB<B SUB<W SUB>B SUB>W ENUM>
' -- 30 <ENUM XOR<B XOR<W XOR>B XOR>W ENUM>
' -- 38 <ENUM CMP<B CMP<W CMP>B CMP>W ENUM>
' -- 85 <ENUM TESTB TESTW XCHGB XCHGW
MOV<B MOV<W MOV>B MOV>W ENUM>
8D -- LEA 0C4 -- LES 0C5 -- LDS
: -- ( opcode "<spaces>name" -- ) CREATE C, DOES> C@ B, B, ;
4 -- AL-ADD 0C -- AL-OR 14 -- AL-ADC 1C -- AL-SBB
24 -- AL-AND 2C -- AL-SUB 34 -- AL-XOR 3C -- AL-CMP
6B -- PUSHB 0A8 -- AL-TEST 0CD -- INT 0EB -- JMP-SHORT
' -- 70 <ENUM JO JNO JB JAE JZ JNZ JBE JA JS JNS JP JNP ENUM>
' -- 0B0 <ENUM AL-MOV CL-MOV DL-MOV BL-MOV
AH-MOV CH-MOV DH-MOV BH-MOV ENUM>
' -- 0E0 <ENUM LOOPNZ LOOPZ LOOP JCXZ
INB INW OUTB OUTW ENUM>
: -- ( opcode "<spaces>name" -- ) CREATE C, DOES> C@ B, W, ;
5 -- AX-ADD 0D -- AX-OR 15 -- AX-ADC 1D -- AX-SBB
25 -- AX-AND 2D -- AX-SUB 35 -- AX-XOR 3D -- AX-CMP
68 -- PUSHW 0A0 -- MEM>AL 0A1 -- MEM>AX 0A2 -- AL>MEM
0A3 -- AX>MEM 0A9 -- AX-TEST 0C2 -- RETW 0CA -- RETW-FAR
0E8 -- CALL 0E9 -- JMP
' -- 0B8 <ENUM AX-MOV CX-MOV DX-MOV BX-MOV
SP-MOV BP-MOV SI-MOV DI-MOV ENUM>
: -- ( opcode "<spaces>name" -- ) CREATE C, DOES> C@ B, ;
6 -- ES-PUSH 7 -- ES-POP 0E -- CS-PUSH 16 -- SS-PUSH
17 -- SS-POP 1E -- DS-PUSH 1F -- DS-POP 26 -- ES:
26 -- DAA 2E -- CS: 2F -- DAS 36 -- SS:
37 -- AAA 3E -- DS: 3F -- AAS 60 -- PUSHA
61 -- POPA 64 -- FS: 65 -- GS: 66 -- CHANGE-OP-SIZE
67 -- CHANGE-ADDR-SIZE 0C3 -- RET 0C9 -- LEAVE 0CB -- RET-FAR
0CC -- INT3 0CE -- INTO 0CF -- IRET 0F0 -- LOCK
' -- 40 <ENUM AX-INC CX-INC DX-INC BX-INC SP-INC BP-INC SI-INC DI-INC
AX-DEC CX-DEC DX-DEC BX-DEC SP-DEC BP-DEC SI-DEC DI-DEC
AX-PUSH CX-PUSH DX-PUSH BX-PUSH SP-PUSH BP-PUSH SI-PUSH DI-PUSH
AX-POP CX-POP DX-POP BX-POP SP-POP BP-POP SI-POP DI-POP
ENUM>
' -- 6C <ENUM INSB INSW OUTSB OUTSW ENUM>
' -- 80 <ENUM NOP CX-AX-XCHG DX-AX-XCHG BX-AX-XCHG
SP-AX-XCHG BP-AX-XCHG SI-AX-XCHG DI-AX-XCHG
CBW CWD ENUM>
' -- 9B <ENUM WAIT PUSHF POPF SAHF LAHF ENUM>
' -- 0A4 <ENUM MOVSB MOVSW CMPSB CMPSW ENUM>
' -- 0AA <ENUM STOSB STOSW LODSB LODSW SCASB SCASW ENUM>
' -- 0D4 <ENUM AAM AAD SALC XLAT ENUM>
' -- 0EC <ENUM DX-AL-IN DX-AX-IN AL-DX-OUT AX-DX-OUT ENUM>
' -- 0F2 <ENUM REPNZ REPZ HLT CMC ENUM>
' -- 0F8 <ENUM CLC STC CLI STI CLD STD ENUM>
Я вчера упоролся подумал, хуля я как лох пешу форт на асме, ТруЪ фротеры пишут форт на ыорте. И начал я с этого —– я представляю вам единственный и неповторимый говно-фрот-асамблец за авторством моего меня.
Примерим:
VARIABLE BYTES
BYTES 'BYTES !
CREATE PROG
9 AH-MOV
0 DX-MOV HERE 2 -
21 INT
4C00 AX-MOV
21 INT
DB" Hello, Forth-ASSembler!$" DROP PROG - 100 + SWAP W!
PROG BYTES @ DUMP
0
// https://dev.to/saigowthamr/how-to-reverse-a-string-in-javascript-3i9c
// In this tutorial, we are going to learn three different ways to reverse a string
// in JavaScript by using the reverse method, reduce method.
// First way
const str = "hello"
str.split('').reverse().join('')
//"olleh"
// We used split method to split the string into an array of individual strings then chain it to reverse method.
// Second way
const str = "hello"
[...str].reduce((prev,next)=>next+prev)
//"olleh"
// First, we spread the string using spread operator and reverse the string using the reduce method
// Third way
function reverseString(str){
const arr = [...str]
let reverse= "";
while(arr.length){
reverse = reverse + arr.pop()
}
return reverse
}
// I mostly like the Second way to reverse a string using reduce method.
// Happy coding...
Это видимо такой вид соревнований, типа как вкрутить лампочку в патрон наиболее упоротым и неочевидным способом. Нахрена это нужно обычному программисту? Может это такой способ ручной обфускации? Тогда понятно
+1
#include <stdio.h>
#include <inttypes.h>
#include <string.h>
typedef struct
{
uint8_t arr[10];
uint8_t pos;
uint8_t is_swap;
} arr10;
arr10 bubble_sort_recursion(arr10 a);
void bubble_sort (uint8_t arr[static 10]);
void bubble_sort (uint8_t arr[static 10])
{
arr10 a;
memcpy(a.arr, arr, sizeof(a.arr));
a.pos = 0;
a.is_swap = 0;
a = bubble_sort_recursion(a);
memcpy(arr, a.arr, sizeof(a.arr));
}
arr10 bubble_sort_recursion(arr10 a)
{
if (a.pos != 9)
{
if (a.arr[a.pos] > a.arr[a.pos + 1])
{
uint8_t tmp = a.arr[a.pos + 1];
a.arr[a.pos + 1] = a.arr[a.pos];
a.arr[a.pos] = tmp;
a.is_swap = 1;
}
a.pos++;
return bubble_sort_recursion(a);
}
else
{
if (a.is_swap == 0)
{
return a;
}
else
{
a.pos = 0;
a.is_swap = 0;
return bubble_sort_recursion(a);
}
}
}
int main(void)
{
uint8_t arr[10] = {244, 90, 254, 109, 33, 85, 69, 81, 126, 71};
bubble_sort(arr);
printf("%" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8,
arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9]);
return 0;
}
Рекурсивная сортировка пузырьком
−4
<j123123__> Ну лол, я 29-летний бородатый чел из Харькова который живет с мамкой, пишет прошивки под микроконтроллеры STM32
<j123123__> Я не мобилизован потому что например дважды в психбольнице лежал, лол
<j123123__> Ну диагноз тама не говорят, вроде шизо-какое-то расстройство
<j123123__> А вот представь вот в пледик укрыться с кунчиком и на сишечке прогать
Узнаем j123123 с новой стороны.
−6
Давайте хвалить "NodeJS".
−1
$type = ($_POST['type'] == 'any') ? '' : str_replace(' ', '%20', str_replace('|','%7C', $_POST['type']));
$make = ($_POST['make'] == 'any') ? '' : str_replace(' ', '%20', str_replace('|','%7C', $_POST['make']));
$url = 'http://www.cycletrader.com/search-results?sort=featured%3Aasc&page='.$_POST['page'].'&type='.$type.'&make='.$make;
$str = getCurlObject($url);
$content = multiexplode('<div id="searchPage"', '<div class="footer', $str);
$list = multiexplode('<div id="gridView"', '<div class="rezDetailsBtm', $content);
$field = explode('<div data-url=', $list);
for ($k = 1; $k < count($field); $k++) {
$title_tmp = multiexplode('<a class="listing-info-title', '</a>', $field[$k]);
$title = multiexplode('title="', '"', $title_tmp);
$link = $lang['dir'].'detail?'.$_POST['form'].'&'.multiexplode('href="', '"', $title_tmp);
$img_tmp = multiexplode('<img', '/>', $field[$k]);
$img = multiexplode('data-src="', '"', $img_tmp);
$price_tmp = multiexplode('class="price', '</span>', $field[$k]);
if (strripos($price_tmp,'<span class="mileage">')) {
$price = multiexplode('<span>', '<span', $price_tmp);
} else {
$price = multiexplode('<span>', '</span>', $price_tmp);
}
if (trim($price) == 'Call for price') $price = '';
$result['item'][$k]['link'] = $link;
$result['item'][$k]['title'] = $title;
$result['item'][$k]['img'] = $img;
$result['item'][$k]['price'] = $price;
$result['item'][$k]['location'] = $location;
}
if (strripos($content,'<div class="pagination')) {
$pagination = multiexplode('<div class="pagination', '</div>', $content);
$pagination_tmp = multiexplode('<span class="hidden-xs','</div>', $pagination);
$pagination_item = explode('<li', $pagination);
if (count($pagination_item) > 6) {
$result['pagination'] = true;
}
}
Стандартный похокод пыходибила.
−4
начало пхп прог уннамед
подключить "пхп модуль 1.0"
доллар целое а = 4
доллар целое б = 2
печать сум доллар а + доллар б 2
помолиться perl
конец пхп прог уннамед
−2
Как перенести секцию ресурсов из одного филе в другое? Не корысти ради. Я - преемник робин-гуда.
Я не вор - я всего лишь нищий аристократ.
Ну да-да, заебали, вирь пишу.
Примерчик на пасцале, плз. Других языков я уже не знаю.