
Artem
02.02.2017
15:14:16
смысли
это защита от оптимизации
мемсет нулями можно выкинуть, если потом память не используется
это нельзя

Google

Berkus
02.02.2017
15:14:46
да, конпайлер может memset() всячески портить
надо специфицировать что код обязателен к исполнению

Дед Пегас
02.02.2017
15:15:33
А, вот оно что.
Понятно.

Berkus
02.02.2017
15:15:38
http://www.daemonology.net/blog/2014-09-04-how-to-zero-a-buffer.html вот например

Andrew
02.02.2017
15:17:16

Alex Фэils?︙
02.02.2017
15:17:22
Я б еще sse2 прифигачил
Ну и авх

Andrew
02.02.2017
15:18:29
ну я просто вообще вспоминал асм, уже год его не трогал)
ну вроде похоже на ZeroMemory

Artem
02.02.2017
15:19:17
ну не очень похоже на функцию, если честно

Google

Artem
02.02.2017
15:19:34
функция обычно бывает с аргументами, а не с данными в .data
и получает свои аргументы по какому-нибудь соглашению вызовов, например, cdecl

Andrew
02.02.2017
15:20:42
ну не очень похоже на функцию, если честно
нуу если надо функцию то
.model flat,stdcall
ZeroMemory PROTO :DWORD,:DWORD
.code
ZeroMemory proc uses edi ecx edx ebx loc:DWORD, len:DWORD
mov edi, loc
mov edx, len
xor eax, eax
mov ecx, edx
shr ecx, 2
mov ebx, ecx
shl ebx, 2
sub edx, ebx
rep stosd
mov ecx, edx
rep stosb
ret
ZeroMemory endp
end
так вроде больше похоже но возможно ошибся где
писал не проверяя код

Berkus
02.02.2017
15:21:13
my_len => len
my_lo => loc
в принципе, вполне себе zeromemory если слишком быстро не надо
ключики обычно до 256 байт длиной, скорость не так важна

Andrew
02.02.2017
15:24:06
кстати есть тут кто кто умеет расшифровывать трафик?

Berkus
02.02.2017
15:25:09
mitm proxy могут
https://www.charlesproxy.com

Andrew
02.02.2017
15:26:34
а кто знаком c l2phx?
просто когда-то читерил чет там понимал
сейчас забил чет а уже весь трафик у всех шифрованый

Alexey
02.02.2017
15:28:21
на винде есть Fiddler (http://www.telerik.com/fiddler)

Дед Пегас
02.02.2017
15:29:29
Годная шняга, кстати

Alexey
02.02.2017
15:29:30
а кроссплатформенное OWASP ZAP (https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)
они оба хороши

Berkus
02.02.2017
15:31:51
они все хороши

Aldar
02.02.2017
16:33:21

Google

Alex Фэils?︙
02.02.2017
16:37:04
Я вайршарком ебал

Kirill
02.02.2017
16:37:39

Stanislav
02.02.2017
16:39:19
берешь вайршарк, если неизвестный трафик, начинаешь писсать диссектор на луа)

Surreal
02.02.2017
23:40:04
void process_message(int x)
{
switch (x)
default:
if (valid_command_message(x))
case CMD1: case CMD2: case CMD3: case CMD4:
process_command_msg(x);
else if (valid_status_message(x))
case STATUS1: case STATUS2: case STATUS3:
process_status_msg(x);
else
report_error(x);
}
Забавно.
https://blog.feabhas.com/2017/02/abusing-c-switch-statement-beauty-eye-beholder/

Vladislav
02.02.2017
23:41:32

Surreal
02.02.2017
23:44:38
Запутанный код легко читается тестами.

Admin
ERROR: S client not available

Vladislav
02.02.2017
23:45:52
иногда код читают чтобы внести в него изменения

Surreal
02.02.2017
23:51:23
О, это да. Реликт, написанный черной ручкой на черной бумаге в темноте, который дописывали черной краской широкой кистью и выдерживали затем в угольной шахте, представляет собой шикарный образец наследия, оставленного нам нашими предками - первобытными программистами.

Vladislav
02.02.2017
23:52:37

Surreal
02.02.2017
23:56:30
Проблема в том, что часто приходится дополнять подобные артефакты своим пером. Каким бы изящным не был почерк, это все те же черные чернила поверх черной бумаги. Далеко не все готовы тратить время на то, чтобы разобраться и переписать все нормально. Да и из песни слов не выкинешь: перепишешь, а что-нибудь где-нибудь поломается; вернешь все обратно и останется только жалеть о потраченном времени.

Vladislav
03.02.2017
00:10:01

Andrei
03.02.2017
00:58:54
Есть другая. Называется код производит сайд-эффекты.
Надо явно указать что все сайд эффекты кода должы быть вычилены к такой-то точке.

Berkus
03.02.2017
06:33:15

Vladislav
03.02.2017
06:36:31
в виндах есть SecureZeroMemory
а еще memset_s http://en.cppreference.com/w/c/string/byte/memset
"This optimization is prohibited for memset_s: it is guaranteed to perform the memory write."

Berkus
03.02.2017
06:58:15
воот!

Google

Berkus
03.02.2017
06:58:44
и оно появилось только в с11, потому что секьюрный мемсет на сях невозможен
> memset_s is only guaranteed to be available if __STDC_LIB_EXT1__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__ to the integer constant 1 before including string.h.
#takoe

Vladislav
03.02.2017
06:59:58
а c11 - это уже не c?

Friedrich
03.02.2017
09:05:21
Он имеет в виду, что секурный мемсет невозможен в C без явной договорённости между библиотекой и компилятором.
Ну т.е. любой мемсет, который ты напишешь, будет априори несекурным.
А если авторы компилятора написали — тогда норм.

Berkus
03.02.2017
09:37:23
именно это я и имею в виду, спасибо!