1. Си / Говнокод #26294

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #define BYPASS_AV_BEGIN char* memdmp = NULL;memdmp = (char*)malloc(100000000);if (memdmp != NULL){int cpt = 0;for (int i = 0; i < 100000000; i++){cpt++;}if (cpt == 100000000){HANDLE file;HANDLE proc;proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 4);if (proc == NULL){LPVOID mem = NULL;mem = VirtualAllocExNuma(GetCurrentProcess(), NULL, 100, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE, 0);if (mem != NULL){DWORD result = FlsAlloc(NULL);if (result != FLS_OUT_OF_INDEXES){
    #define BYPASS_AV_END }}}}}
    
    int main()
    {
        BYPASS_AV_BEGIN
        //malware code...
        BYPASS_AV_END
    }

    Обход антивирусов и антивирусных виртуалок
    https://lolzteam.org/threads/1275661/

    Запостил: Stallman, 31 Декабря 2019

    Комментарии (181) RSS

    • показать все, что скрытоvanished
      Ответить
      • Ну так виртуалка для чего? Для того, чтобы код запустить? Так как же она пропустит?
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • И обход сработает
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • Я тоже не спец. В "PHP" нет никакого "VirtualAllocEx".
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Ничего не понял.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • Зачем бочки металлическими опилками наполняются?
                          Много жизненной энергии аккумулируется.
                          Малость оргонными аккумуляторами являются.
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                          • Портативный регистратор Ауры (электромагнитных полей) “А-скан” (A-scan)
                            Что такое аура?

                            Научно и практически доказано, что человек – многомерная структура, и физическое тело – это лишь первая, самая плотная оболочка. Физическое тело человека окружено электромагнитным полем (ЭП), часто называемым аурой. «Аура» (лат. «aura» — 1) дуновение ветерка, воздушное пространство, небеса; 2) свет).

                            Аура не имеет четких границ и проникает в каждую клетку тела, отражая ее характеристики на тонких полевых уровнях. Аура есть сложное химическо-электромагнитное овальное облако, которое окружает среднестатистического человека на расстоянии около пяти сантиметров от его плеч. Другими словами, аура - это энергоинформационное поле человека. В нем отражается не только состояние физического тела, но и психоэмоциональное состояние человека и его кармическое поле.

                            Аурическая оболочка подвижная, ее размер, форма и плотность меняется от физической, эмоциональной и мыслительной деятельности человека. Аура может рассказать нам все о внутренней сущности человека.

                            Принцип действия

                            Прибор А-скан является бюджетной альтернативой ГРВ-камеры. От типа разряда зависит вид и качество снимка. Действие А-скан основано на высоковольтных импульсных разрядах низкой частоты. Прибор А-скан регистрирует слабые электромагнитные поля человека и способен регистрировать как минимум три аспекта электромагнитного поля, окружающего и пронизывающего физическое тело человека.

                            Тестируемый палец ставится в центре электродной пластины. Коротким нажатием (1 сек.) кнопки START активируется поле прибора, входящее в контакт с полем человека, в результате чего на электродной пластине остается статический отпечаток. Проявляется снимок с

                            Отпечаток ауры будет полезен всем, кто стремится к самопознанию и самосовершенствованию, а также просто следит за здоровьем своим и своих близких.
                            Ответить
                          • Зачем бочки металлическими опилками наполняются?

                            Эм, чтобы опилки спекались? Как в когерере.
                            Ответить
                      • О, в рашке начали продавать цикориевые протомагнитные браслеты. Признак близкого развала.
                        Ответить
                  • ЦЕЛЫЙ МАГАЗИН ЭТОГО ГОВНА... ЁБАНЫЙ СТЫД!!!11 ОЯЕБУ!!!111
                    Ответить
                    • Полностью с вами согласен, Анатолий Александрович.
                      Ответить
                      • Ничего не понимаю... Одно дело — нагенерировать вореций. Другое дело — с серьёзным видом производить всякую поебень. Нагенерировать тонну технической документации на пустышки и организовать производство!

                        Одно время нам в почтовые ящики забрасывали листовки какого-то «Центра уникальных товаров» с рекламой подобной хрени.
                        Ответить
                      • двачую онотоле.
                        Ответить
    • Brehnya. Антивирус загружает образ в память и смотрит, какие API и в каком порядке он будет вызывать. Я нашел способ водить кашперского за нос, он до сих пор не залатан.
      Ответить
      • касперский и не должен отслеживать твои сесксуальные приключения
        Ответить
        • Ебало закрой. Шлюхин сын.
          Ответить
        • Касперский вовсю юзает виртуалки, впрочем, от особо извращенных вирусов это не поможет.
          Всегда ношу мысль в голове, вирусы и антивирусы пишут в одной и той же лаборатории одни и те же люди.
          Ответить
    • показать все, что скрытоvanished
      Ответить
    • Макросы не обязательно в одну строку писать, открой для себя \
      Ответить
      • Это не его код, а какого-то какира с форума по сцылке.
        Ответить
    • Я не понял, он там сам с собой пиздит чтоли?
      Ответить
      • Он упоминает как минимум ещё двух участников форума. Вероятно, их сообщения удалены.
        Ответить
    • Отформатировал код, проверьте:
      char* memdmp = NULL;
      memdmp = (char*)malloc(100000000);
      if (memdmp != NULL){
          int cpt = 0;
          for (int i = 0; i < 100000000; i++){
              cpt++;
          }
          if (cpt == 100000000){
              HANDLE file;
              HANDLE proc;
              proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 4);
              if (proc == NULL){
                  LPVOID mem = NULL;
                  mem = VirtualAllocExNuma(GetCurrentProcess(), NULL, 100, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE, 0);
                  if (mem != NULL){
                      DWORD result = FlsAlloc(NULL);if (result != FLS_OUT_OF_INDEXES){
      Ответить
      • Имею мнение, хрен оспоришь, что такой код нужно писа́ть не в мокросах, а на ассемблере, потому что компилятор при включенной оптимизации имеет право выкинуть цикл к хуям собачьим.
        Ответить
        • Гцц 100% выкинет и цикл и иф.
          Ответить
          • Жаль, что гцц не собирают малуаре под винду.
            Ответить
          • Гцц выпиливает цикл, вычисляя значение cpt «в уме».

            Не выпиливает цикл, если счётчик или переменную, изменяемую в цикле, объявить с атрибутом volatile. Например, так:
            volatile int cpt = 0;
                for (int i = 0; i < 100000000; i++){
                    cpt++;
                }
            Или так:
            int cpt = 0;
                for (volatile int i = 0; i < 100000000; i++){
                    cpt++;
                }


            Ещё у гцц можно локально менять значение параметра оптимизации, но только для функций. Если объявить функцию с __attribute__ (( optimize("O0") )) или с #pragma GCC optimize ("O0"), то тело функции не будет оптимизировано.
            Ответить
            • странно, что второй не заоптимизирует
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • я честно скажу, что спеку не читал, но компилятор всё так же в состоянии понять, что эта хуета никаких сайд-эффектов не несет.
                  Ответить
                  • показать все, что скрытоvanished
                    Ответить
                  • Если написано «volatile int i = 0; i++» — компилятор обязан выделить обнулённую ячейку памяти под i, а затем прибавить к ней единицу. А для «i < 100000000» компилятор обязан сгенерировать код, который прочитает i из памяти и сравнит прочитанное с константой.
                    Собственно, нужно это либо для этого вашего MMIO (только в теории и во во всякой там контроллерушне), либо для (убогой) синхронизации между тредами.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • Ага, заборы городить.
                        https://en.cppreference.com/w/cpp/atomic/atomic_thread_fence
                        https://en.cppreference.com/w/cpp/atomic/memory_order
                        Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • Ну если тебе надо настолько сильно заморачиваться синхронизацией — боюсь, дефолтные настройки джавы тебе не помогут. А для прикладных задач и в крестах с головой хватает std::mutex + std::lock_guard, на удивление удобно сделанных.

                            Я, кстати, за «Winapi»: SRW-локи круты.
                            https://docs.microsoft.com/en-us/windows/win32/sync/slim-reader-writer--srw--locks
                            Ответить
                          • Волатильность и треды никак не связаны.

                            volatile нужен в джвух случаях - общие переменные с обработчиком прерывания и общение с железками. Т.е. прикладнику он нужен *чуть реже чем никогда* (кроме позикс сигналов и setjmp, пожалуй).

                            Для тредов он бесполезен т.к. во-первых не даёт happens before в отличие от тех же атомиков и мутексов, в которые встроен нужный барьер, а во-вторых слишком жёстко убивает оптимизации.
                            Ответить
                            • показать все, что скрытоvanished
                              Ответить
                              • Да, интринсики для атомарных операций работают и как барьер для конпелятора.

                                Ну и asm volatile (... "memory") для особо тяжёлых случаев.
                                Ответить
                            • >> Т.е. прикладнику он нужен *чуть реже чем никогда*

                              А как же задержки в игрушках через пустой цикл?

                              Кстати, помнишь, из-за чего программы, написанные на «Борманд Паскале», вылетают с ошибкой № 200 (деление на ноль) на процессорах с частотой выше ≈ 300 МГц (да, смешная частота по нынешним меркам)?
                              Ответить
                              • > Кстати, помнишь, из-за чего программы, написанные на «Борманд Паскале», вылетают с ошибкой № 200 (деление на ноль) на процессорах с частотой выше ≈ 300 МГц (да, смешная частота по нынешним меркам)?
                                Полагаю, потому что какой-то таймер делил на прошеднее с последнего кадра время, которое оказывалось меньше 1 миллисекунды?

                                В «Quake engine», кстати, есть забавный багор: часть вычислений физики зависит от фпса, в частности, высота/дальность прыжков. На 333 фпс, например, прыжки получаются медленными и высокими, а на 250 — быстрыми и низкими.
                                Ответить
                                • Нет, там всё сложнее. Делитель постоянный, равный 55.

                                  Есть гипотезы, почему x86 вываливает ошибку «деление на ноль»?

                                  Через некоторое время я напишу правильный ответ. Для незнакомых с рахит-тинктурой x86 он будет неожиданным.
                                  Ответить
                                  • О, почитал доку. Какой багор )))
                                    Ответить
                                    • Для тех, кто до доки не добрался, подсказка: нужно посмотреть опкоды, соответствующие мнемоникам DIV и IDIV, и тип операндов и результата для каждого варианта.

                                      Багор в том, что под частное выделили слишком мало битов, а именно в 2 раза меньше, чем под делимое.

                                      Если я попытаюсь поделить 32768 на 64, используя инструкцию с 16-битным делимым и 8-битным делителем, то получу нелепое сообщение «Деление на ноль», потому что частное (512) не влезло в 8 бит.
                                      Ответить
                                    • Оцени:
                                      ; Longint division
                                      ; In	DX:AX = 1st operand
                                      ;	BX:CX = 2nd operand
                                      ; Out	DX:AX = Result
                                      ;	BX:CX = Remainder
                                      
                                      LongDiv:
                                      
                                      	CMP	Test8086,2
                                      	JB	@@0
                                          .386
                                      	SHL	EAX,16
                                      	SHRD	EAX,EDX,16
                                      	SHL	ECX,16
                                      	SHRD	ECX,EBX,16
                                      	JE	SHORT @@9a
                                      	CDQ
                                      	IDIV	ECX
                                      	MOV	ECX,EDX
                                      	SHLD	EDX,EAX,16
                                      	SHLD	EBX,ECX,16
                                      	RETF
                                          .8086
                                      @@0:	PUSH	BP
                                      	XOR	BP,BP
                                      	OR	DX,DX
                                      	JNS	@@1
                                      	INC	BP
                                      	NEG	AX
                                      	ADC	DX,0
                                      	NEG	DX
                                      @@1:	OR	BX,BX
                                      	JE	@@5
                                      	JNS	@@2
                                      	INC	BP
                                      	INC	BP
                                      	NEG	CX
                                      	ADC	BX,0
                                      	NEG	BX
                                      	JE	@@5a
                                      @@2:	PUSH	BP
                                      	MOV	SI,CX
                                      	MOV	DI,BX
                                      	XOR	BX,BX
                                      	MOV	CX,DX
                                      	MOV	DX,AX
                                      	XOR	AX,AX
                                      	MOV	BP,16
                                      @@3:	SHL	AX,1
                                      	RCL	DX,1
                                      	RCL	CX,1
                                      	RCL	BX,1
                                      	INC	AX
                                      	SUB	CX,SI
                                      	SBB	BX,DI
                                      	JNC	@@4
                                      	DEC	AX
                                      	ADD	CX,SI
                                      	ADC	BX,DI
                                      @@4:	DEC	BP
                                      	JNE	@@3
                                      	POP	BP
                                      	JMP	SHORT @@6
                                      @@9:	POP	BP
                                      @@9a:	MOV	AX,200
                                      	JMP	HaltError
                                      @@5:	JCXZ	@@9
                                      @@5a:	XCHG	AX,BX
                                      	XCHG	AX,DX
                                      	DIV	CX
                                      	XCHG	AX,BX
                                      	DIV	CX
                                      	MOV	CX,DX
                                      	MOV	DX,BX
                                      	XOR	BX,BX
                                      @@6:	SHR	BP,1
                                      	JNC	@@7
                                      	NEG	CX
                                      	ADC	BX,0
                                      	NEG	BX
                                      	INC	BP
                                      @@7:	DEC	BP
                                      	JNE	@@8
                                      	NEG	AX
                                      	ADC	DX,0
                                      	NEG	DX
                                      @@8:	POP	BP
                                      	RETF
                                      Ответить
                                      • P.S. Это код «Борланда» для деления произвольного 32-битного целого на произвольное целое (такого же типа), чтобы не нарываться на переполнение, когда частное не влезает в 16 бит.
                                        Ответить
                                  • Переполнение при делении, из-за того, что на частное отводится в 2 раза меньше бит, чем на делимое?
                                    Ответить
                                    • Ой, а частота при чём?
                                      Ответить
                                    • Так точно! Проморгал твой ответ.

                                      Модуль Crt стандартной библиотеки «Турбо Паскаля» из блока инициализации вызывает процедуру, которая рассчитывает константу, необходимую для реализации задержек пустыми циклами. Эта процедура гоняет эталонный пустой цикл и подсчитывает, сколько итераций он успел выполнить за один тик системного таймера, а именно за 55 миллисекунд.

                                      Поскольку процедура Delay принимает аргумент в миллисекундах, нас интересует, сколько итераций пустого цикла нужно сделать, чтобы получить задержку в одну миллисекунду. Для этого значение счётчика, полученное на предыдущем шаге, нужно разделить на 55.

                                      И именно при делении случается багор. Когда процессоры были более медленными, результат деления влезал в 16 бит. Например, 100-мегагерцовый процессор за 55 мс успеет сделать 5 500 000 тактов. Пусть одна итерация цикла отнимает 5 тактов, тогда счётчик равен 1 100 000, делим на 55 и получаем 20 000 — в 16 бит влезает. В «Борланде» решили, что этого достаточно.

                                      А потом появились более быстрые процессоры, у которых результат деления превышает 65536, хотя делимое в 32 бита спокойно влезает.
                                      Ответить
                        • показать все, что скрытоvanished
                          Ответить
                    • показать все, что скрытоvanished
                      Ответить
                    • как может быть MMIO для переменной, место которой на стеке или регистрах?
                      Ответить
      • Вся ваша тупость в том, что в выделяете буфера размером с тело бинаря.
        штука с ЦЫклом тоже не прокатит. Сделайте лучше рандом, но частый.
        Вот весело будит, когда проактивка станет ловить вирь через раз ^_^

        Какой баrop, прости, господи.
        Ответить
      • Забавно, особенно с учётом того, что многие антивири всё неподписанное говно с OpenProcess в импортах превентивно уничтожают (утрирую, конечно, но шансы нарваться на проактивку с таким говном в коде выше).
        Ответить
        • Ничего из описанного тобой на практике я не наблюдал.
          Пиздеж и провокация.
          Ответить
        • «Хакер» с форума только на первый взгляд может произвести впечатление знатока. Но стоит чуть копнуть...

          Во-первых, он не знает про volatile — рабочий инструмент любого околонизкоуровневого пердолика.

          Во-вторых, он написал какую-то шизу про цикл: «На деле задержек из-за цикла не будет ибо это простая инструкция для процессора и на оборот для санбокса антивиря». В какую «простую» инструкцию превращается цикл, он так и не показал. Почему «простая» инструкция для процессора окажется сложной для виртуальной машины антивируса, он, конечно же, объяснять не стал.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • показать все, что скрытоvanished
              Ответить
              • > Вообще эта вся ваша "хакерская" тусофка -- такая параша.
                В клирнете? На сайте в зоне «.org»? С энтерпрайзным сертификатом? Со ссылкой на ёбанный «ВКонтакте» в профиле? Это не «хакерская тусофка», это просто сборище тупых школьников, которое содержит школьник поумнее. Никаких Чаппелов и Руссиновичей там нет и быть не может.
                Ответить
            • Да. «Volatile» говорит конпелятору, что каждая запись и каждое чтение из/в пельменную будут обладать сайд-эффектами, поэтому выкидывать или перегруппировывать их нельзя.
              Ответить
              • Кстати, как в чисто функциональных языках (в которых не должно быть функций с побочными эффектами) решили проблему ввода-вывода? Добавили дополнительным аргументом функции время или я ошибаюсь?

                По сути переменная с директивой volatile — это уже не чистая переменная, а неизвестная компилятору функция времени, поэтому он не может произвести вычисления «в уме» и выкинуть цикл.

                То есть сишные и крестовые категории — это костыли, подобные тем, которые расставляли в декларативных языках.
                Ответить
                • > Кстати, как в чисто функциональных языках (в которых не должно быть функций с побочными эффектами) решили проблему ввода-вывода?
                  Вздохнули, пожаловались на несовершенство мира и запилили процедуры IO-монады: https://www.haskell.org/tutorial/io.html, хорошенько огородив их от уютного чистого фп-мирка. Здравое, в общем-то, решение: фанатизм ещё никого до добра не доводил.
                  Ответить
              • показать все, что скрытоvanished
                Ответить
            • Я не увидел тут охулион аллоков. Сто миллионов раз тут производится банальный инкремент:
              for (int i = 0; i < 100000000; i++){
                      cpt++;
                  }

              А аллок тут один.
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • >> Причина блокировки: Был ранее заблокирован за мошенничество
                  >> Окончание блокировки: Никогда

                  Чувак для «Лолзтима» оказался большой проблемой.
                  Ответить
                • Я не изучал устройство антивирусов, поэтому утверждать ничего не могу.

                  Попытаюсь понять его точку зрения. Допустим, взяли не его код, а код с volatile и с честным циклом. Допустим также, что у мумулятора нет такого крутого статического анализатора, как у компилятора, но, тем не менее, циклы он детектировать умеет. Мы же можем заметить, что происходят регулярные прыжки назад по одному и тому же адресу? Чтобы решить проблему останова, мумулятор ограничивает количество итераций каким-то числом, настолько большим, чтобы не портить логику типичной программы, но не слишком большим, чтобы не тратить много времени на анализ. Либо ограничивает время мумуляции цикла. В любом случае рвёт огромный цикл, так что до ста миллионов итераций не доходит.

                  Но тогда получается, что такой честный цикл и для проца должен создать проблему. Да, тело маленькое, влезает в кэш, в конвейер, декодер инструкций и предиктор переходов не загружены лишней работой, но всё равно 100 миллионов — это немало. Хотя на современных процессорах задержка будет чуть меньше секунды, а мумулятор обычно медленнее нативного исполнения кода.

                  Может быть, дело в том, что для пользовательской программы с UI задержка в секунду на старте — обычное дело (всякие «фотошопы» и «офисы» вообще могут несколько секунд показывать «splash screen»), так что пользователь ничего не заметит, а для мумулятора это непозволительно?
                  Ответить
                  • P.S. Возникла идея. А что, если после цикла проверять условие i == cpt ? Можно ли таким способом детектировать мумулятор антивируса и направить его на ложный след?
                    Ответить
                    • В современных антивирусах поголовно применяются охуевшие эвристики, ML, AI и прочая хипстота недетерминированная. Масштабы эпидемии можно оценить, просто погуглив «название_антивируса machine learning». Так что вряд ли такое реально.
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • Индустрия хайпа, пиздежа, неоправданных ожиданий и изнасилованных журналистов.
                          Ничего, как и любой хайп, «AI»-мания скоро сойдёт на нет. Кто сейчас про блокчейны помнит, кроме парочки ебанутых и ещё парочки тех, кому они действительно нужны? Вот и с говносетями так же будет.
                          Впрочем, на место одного хайпа придёт другой — и с этим ничего не поделаешь. Будем охуевать от каких-нибудь квантовых сопроцессоров (хотя и вряд ли, слишком медленно отрасль развивается, хипстота такого не любит).
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • В репозитории тоже говно иногда пролезает, к сожалению.
                              Ответить
                            • > дыры в безопасности, которые не лечат
                              Это про пользователей? Дыр в безопасности шире этой не существует.

                              > все чуваки получали ключ от MS для распостранения программ
                              Фу, говнище какое. Ещё после этого можно выпускать клавиатуры со считывателем магнитной полосы, чтобы можно было раз в 5 минут оплачивать подписку на компьютер-как-сервис.
                              Или запретить вводить любые тексты, которые противоречат текущим представлениям науки (в этом случае невозможно будет написать на таком компьютере целый класс статей, принятых наукой будущего).

                              Что за говно? Windows уже испохабили пару лет назад и ввели неотключаемую проверку подписей драйверов согласно захардкоженным сертификатам. Стоп ит!

                              Это говно, тупиковый путь. Только то, что MS доверило какому-то пидриле запускать его программу, не даёт каких-либо гарантий качества этой программы. И если кому-то не доверило - нельзя сказать, что программа - говно с вирусами.

                              Единственный адекватный путь до появления ИИ, который сможет понять суть программы - песочницы и эмуляторы. Хочет программа срать - эмулятор подставляет ей аналог китайской циклической флешки на терабайт с гайкой для груза. А потом чтоб можно было смотреть диффы и мёрджить состояния до и после работы программы (полу)автоматическими средствами ОС, фильтруя откровенное говно. Хочет сливать данные - подставляем фейковый жёсткий диск Джона Доу.
                              То есть как в Андроиде, только по умолчанию ограничений нет, все возможности эмулируются.
                              Ответить
                              • Дико плюсую по всем пунктам. Ограничения на распространение программ — это рак.
                                Вон, регулярно раздаются голоса со стороны параши публикуются статьи о том, как очередное приложение удолили из аппстора/гуглплея/хром маркета просто потому, что какая-то ёбанная хипстерская нейросеть выдала false positive. И техподдержке на такие вещи глубоко похуй — бабосы мутятся, статьи про «крутые» ML-алгоритмы крутятся, что ещё для счастья надо?..
                                А ещё регулярно пишутся торжественные статьи об удалении из аппстора/гуглплея/хром маркета очередного маскировавшегося и сливавшего инфу троянца. То, что его уже скачали десятки/сотни тысяч пользователей — ну, это сугубо рабочий момент.
                                И нахуя такая иллюзия защиты вообще нужна?
                                Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • > любишь ставить драйверы с диска зверь сд?
                                  Нет. Банально старые драйверы, у которых подпись была сделана не по новому канону (или протухла?).

                                  Раньше такие драйверы можно было самому подписать (доступно только для продвинутых пользователей, которые просто так babi_ebutsa.mpg.exe не установят), но это перестало работать, когда на список правильных сертификатов нельзя стало повлиять добавлением в хранилище доверенных.

                                  Кстати, это же делает винду неюзабельной в тот момент, когда протухнут эти сертификаты? Или подпись действует после протухания сертификата, им просто нельзя после этого подписывать что-то новое?
                                  Как тогда использовать винду на промышленных установках, где компьютер один раз запустили и больше не обновляют софт?
                                  Ответить
                                  • > нельзя подписывать что-то новое
                                    This.

                                    > старые драйверы
                                    А для дров, подписанных до определённой даты, там костыль есть. Поэтому они работают и без подписи мс.
                                    Ответить
                                  • З.Ы. Ну и своя подпись до сих пор работает - отключи secure boot и поправь пару параметров в bcd.
                                    Ответить
                                    • Хмм, secure boot, спасибо! Это, видимо, из-за него получается неотключаемость питушни с драйверами. С ним bcdedit далеко посылает, когда пытаешься изменить нужные параметры.
                                      Ответить
                                      • При включенном «secure boot» новые версии «Windows» включают дополнительные ограничения на запуск всякой питушни.

                                        Мне пришлось отключать «secure boot», чтобы проверить «NTVDMx64» на 64-битной «Windows 8.1». «NTVDMx64» пытается хукнуть несколько функций «WinAPI», а «Windows» при включенном «secure boot» не даёт этого сделать.
                                        Ответить
                                        • Офтопик. Я тут уже рассказывал про неофициальный проект VDM для 64-битных «Windows»:

                                          https://github.com/leecher1337/ntvdmx64

                                          Я также рассказывал про то, что 16-битные приложения «Windows» нельзя запустить из 64-битной «Windows», хотя 32-битные приложения запустить можно, и 16-битные сегменты защищённого режима создавать можно. Причина как минимум в том, что из-за неразвитости 16-битного WinAPI 16-битные приложения используют прерывания «DOS». Например, функций findfirst/findnext в 16-битном WinAPI нет, их приходится доставать через интерфейс «DOS». Так что помимо загрузчика формата «NE» и соответствующих DLL потребуется ещё эмулировать DPMI — интерфейс защищённого режима к прерываниям «DOS».

                                          Так вот энтузиасты таки реализовали среду для запуска 16-битных приложений из 64-битных «Windows»:
                                          https://github.com/otya128/winevdm

                                          Однако, нативным способом реализовать его всё равно не удалось:
                                          64-bit Windows cannot modify LDT(NtSetInformationProcess(,ProcessLdtInformation,,) always returns error)

                                          Из-за отсутствия возможности через WinAPI в 64-битных «Windows» менять LDT (а нам это необходимо, поскольку в 16-битных «Windows» модель памяти не «flat», а сегментированная) авторы всё-таки решили использовать эмулятор процессора, как в «NTVDMx64» (там эмулятор понадобился из-за невозможности создать сегмент режима «V86» из «длинного» режима 64-битного процессора).
                                          Ответить
                                          • показать все, что скрытоvanished
                                            Ответить
                                            • «Досбокс» хорош как песочница.

                                              Однако, кому-то хочется запуска программ одним кликом. В «Windows» же нет шебанга /etc/magic и нельзя настроить так, чтобы досовские файлы обрабатывались «Досбоксом».

                                              Кому-то хочется более тесного взаимодействия с системой. Ну чтобы 16-битные приложения работали так же, как и родные приложения системы.
                                              Ответить
                                              • > одним кликом
                                                > взаимодействия с системой

                                                Как часто ты юзаешь 16-битные приложения под винду? По-моему и в виртуалке норм.
                                                Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • Ну переименуй в exe16 и кликай.
                                                  Ответить
                                                  • показать все, что скрытоvanished
                                                    Ответить
                                                    • Файлы «.sln» — решения «Visual Studio» — открываются в нужной версии (2010/2015/...) сразу по щелчку. Но я сейчас проверил реестр — там просто запускается «VSLauncher», который всю магию и делает.
                                                      Ответить
                                                      • Причём в «VSLauncher.exe» заголовки типа «Microsoft Visual Studio Solution File, Format Version 9.00» захардкожены. Он не сможет запустить версию студии, которая в него не захардкожена.
                                                        Ответить
                                                        • > не сможет запустить версию студии, которая в него не захардкожена
                                                          Что логично, т.к. они там 100500 раз поменяли структуру каталогов студии за эти годы.
                                                          Ответить
                                                          • Ты думаешь, там все каталоги захардкожены? Большую часть каталогов VSLauncher берёт из реестра. В нём ключи реестра захардкожены.

                                                            Итого:
                                                            1. Реестр распухает.
                                                            2. VSLauncher с каждой новой версией тоже распухает.
                                                            Ответить
                                                            • Надо чтоб гомоиконы каждая версия ВС добавляла в список в реестре свою обёрточку, а лаунчер бы потом каждую обёртку вызывал и спрашивал, мол, не сожрёшь ли ты такой файл? А потом выбирал либо ту, которая отвечает «да, это мой файл», либо, если таких нет, самую старшую из тех, кто ответил «версия не моя, но сожрать могу».
                                                              Ответить
                                                    • показать все, что скрытоvanished
                                                      Ответить
                                                      • Мсо - мелкософт офис?
                                                        Ответить
                                                      • > MSOXMLED
                                                        Что ни говори, а аббревиатуры и подобное говно - зло.
                                                        По ним никак не поймёшь, о чём речь, а также существуют коллизии.
                                                        Особенно - в названиях придурошных ИТ-технологий вроде MVC или WCT, которые выеденного яйца не стоят, а уже зовутся громким именем.
                                                        Ответить
                                                        • @выеденного яйца не стоят,

                                                          А высосанного через трубочку - стоят?
                                                          Ответить
                                            • Был ещё когда-то проект LinE — это как WinE, но наоборот: чтобы запускать ELF-файлы из-под «Windows», не наворачивая полного эмулятора.

                                              По какой-то причине заглох. Вероятно, из-за того, что для запуска типичного линуксового приложения тонкой прослойкой не обойтись.
                                              Ответить
    • Он смотрит не то, как ты выделяеш блок а размер блока и что туда пишешшш
      Ответить
    • Он смотрит не то, как ты выделяеш блок а размер блока и что туда пишешшш
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Почему ваши куки отдаются под другой сервер? Что за дискриминация?
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Сколько бы не вострил Кошмарский свою недоэвристику, обязательно найдётся дыра, через которую вытечет всё его говно.

      Более тупого подхода к безопасности и придумать нельзя.
      Ответить
      • А если гандон на нее натянуть, подобно тому, как винокуры натягивают на горлышко бутылки?
        Ответить
        • что-то мне подсказывает, что в полку петухов прибудет... Новая файка будет называться "винокур"
          Ответить

    Добавить комментарий