Перейти к содержанию

germanshnayder

Стажёры
  • Постов

    11
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные germanshnayder

  1. В 28.06.2021 в 00:17, Garik66 сказал:

    копию структур создает не игра, а твой поток, который ты не уничтожаешь.

    Нет, именно игра. Уже давно проверил, попробовав перейти по локам n-ное количество раз, а уже после запустить скрипт с добавлением строчки вывода о числе найденных сигнатур

  2. 16 часов назад, Xipho сказал:

    Ты немного неправильно понимаешь работу твоей игры. На самом деле, она не делает слепки и не кладет их ДО действующей структуры. Наоборот, при перезагрузке локации старая память копируется в новое место и становится истинным именно новое место. А старые места подметает сборщик мусора, когда придется. Именно поэтому у тебя действующая структура всегда последняя.

    Тогда почему игра сразу не убирает мусор в виде большого пака неиспользующихся структур, а кладет их в свою память на час-два? Нет, это не упрек, мне просто интересно.

     

    16 часов назад, Xipho сказал:

    По скрипту - тебе не нужно перебирать циклом всю эту хрень, тебе нужен только последний элемент.

    Я знаю, просто при начале работы не понимал как в луа назначаются переменные, поэтому ляпнул максимально костыльным способом)

     

     

    Так или иначе - вопрос решен.

    Долго гуглил как успешно запихнуть это в метку, перебирал StringToByteTable и прочие write функции (которые не дали результата)

    В итоге случайно наткнулся на это

    Ранее не знал про фичу AutoAssemble, и попробовал таким махом склепать солянку из своего первого скрипта и скрипта вышеприведенного на луа:

    Спойлер
    
    [ENABLE]
    {$LUA}
    sl = AOBScan("05 00 00 00 00 00 00 00 6A 43 06 F8 00 00 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 05 00 00 00 00 00 00 00 XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8");
    if(sl == nil) then
    	print("No code found!");
    else
      j = stringlist_getCount(sl);
      str = stringlist_getString(sl,j-1)
      registerSymbol("bytes",str)
    
      autoAssemble([[
    
    alloc(write, 1)
    registersymbol(write)
    CreateThread(write)
    
    write:
    
    mov rcx, bytes
    mov dword [value],rcx
    ret
    
    ]])
    
      unregisterSymbol("bytes")
      object_destroy(sl);
    end
    
    [DISABLE]

     

     

    Удивительно, как это заработало сразу и без правок, теперь он кладет в метку истинный адрес. Спасибо)

    P.S. Создание value оставил также отдельным скриптом, т к dealloc и unregistersymbol в aa-функции не компилятся. Работает - не трогай)))

    unknown.png

    Можно закрывать.

     

  3. Всем привет. Делаю скрипт на автомат. поиск  структуры с координатами, вопросы изначально задавал отсюда (тема закрыта за постинг в неправильный раздел), исправил регистр с eax на rcx и максимально упростил код (сделав другую часть работы через систему поинтеров CE), в итоге он заработал правильно, вот, если кто хочет взглянуть: 

    Спойлер
    
    [ENABLE]
    
    
    aobscan(INJECT,05 00 00 00 00 00 00 00 6A 43 06 F8 00 00 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 05 00 00 00 00 00 00 00 XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8) // should be unique
    alloc(adresspl,50)
    label(value)
    registersymbol(adresspl)
    registersymbol(value)
    
    adresspl:
    mov rcx,INJECT
    mov dword [value],rcx
    ret
    
    value:
    db 0 0 0 0 0 0 0 0
    
    createthread(adresspl)
    [DISABLE]
    dealloc(adresspl)
    unregistersymbol(adresspl)
    unregistersymbol(value)

     

     

    Но из непродолжительного использования вылезла другая проблема. После перезахода с главного меню или в процессе перехода по локациям игра делает копию памяти прошлой сессии и кладет его в память, видимо, в целях защиты, пуская пыль в глаза аобскану. Такая "копия" полностью неактивна и значительна по размерам - делать фильтры полностью бесполезно и бессмысленно. С каждым перезаходом их число возрастает, из памяти они чистятся примерно раз в час. Если условно перезайти раз 9 - будет найдено 9 совпадений по АОБскану соответственно. 

     

    Все бы было полностью сломано, если б не один нюанс... Клиент кладет фуфлыжные "слепки" памяти всегда ДО истинных рабочих структур.

     

    Использовав этот скрипт покажу по скрину:

    unknown.png

     

    Следовательно, последний результат сканирования будет правильным при любых раскладах. Но как это реализовать и записывать в метку именно его? (Главный вопрос темы)

     

    Покурил гугл и внятной инфы по этому поводу шаром покати.

    В качестве реализации взял вышеприведенный скрипт и попробовал добавить доп. функцию write в цикл, чтобы по его окончании в метку записался адрес именно последнего результата аобскана, получилось так: 

    Спойлер
    
    [ENABLE]
    {$LUA}
    t = getAddress( "Value" )
    sl = AOBScan("05 00 00 00 00 00 00 00 6A 43 06 F8 00 00 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 05 00 00 00 00 00 00 00 XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX F8");
    if(sl == nil) then
    	print("No code found!");
    else
      j = stringlist_getCount(sl);
       print("Found:",j);
       for i = 1, j do
       print(stringlist_getString(sl,i-1));
       writeBytes(t, sl);
       end
       object_destroy(sl);
    end
    
    [DISABLE]

     

     

    А также простецкий АА скрипт под создание метки value и отведение под нее памяти (сделал эти скрипты отдельно т к при совмещении компилятор ругается):

    Спойлер
    
    [ENABLE]
    {$ASM}
    alloc(adresspl,1)
    label(value)
    registersymbol(value)
    registersymbol(adresspl)
    
    adresspl:
    
    value:
    db 0 0 0 0 0 0 0 0 0
    
    [DISABLE]
    {$ASM}
    dealloc(adresspl)
    unregistersymbol(value)
    unregistersymbol(adresspl)

     

     

    Правда, по итогу метка value вообще не перезаписывается и с ней ничего толком не происходит... Я даже не могу проверить, правильно ли то, что я использовал именно writeBytes для записи адреса. 

  4. Возможно моя грубейшая в том, что я использовал add вместо mov, поэтому исправил следующим образом:

    Спойлер
    
    
    newmem:
    cmp dword ptr [rcx+8],F806436A // фильтр на порядковый номер ячейки памяти структуры (может измениться при обновлении или редко после краша игры)
    cmp dword ptr [rcx+40],5 // фильтр на конец структуры
    jne code
    mov rcx,[rcx+10] // смещение от начала структуры до 1 координат
    mov qword [Value],rcx // запись в метку double значения
    mov rcx,[rcx+8] // до 2 координат
    mov qword [Value1],rcx // запись в метку
    mov rcx,[rcx+8] // до 3 координат
    mov qword [Value2],rcx // запись в метку
    mov rcx,[rcx+8] // до 4 координат
    mov qword [Value3],rcx // запись в метку
    mov rcx,[rcx+8] // до 5 координат
    mov qword [Value4],rcx // запись в метку
    mov rcx,[rcx+8] // до 6 координат
    mov qword [Value5],rcx // запись в метку
    mov rcx,[rcx-38] // приводим rcx в изначальное положение чтобы ничего не сломалось

     

    Но в результате получаю вылет спустя 5 секунд после активации скрипта.

     

    Я пошел дальше, и решил пересобрать скрипт по топику отсюда (спасибо imaginary)

    Получилось вот так:

    Спойлер
    
    [ENABLE]
    
    
    aobscan(INJECT,05 00 00 00 00 00 00 00 6A 43 06 F8 00 00 00 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 05) // should be unique
    alloc(adresspl,100)
    label(value)
    label(value1)
    label(value2)
    label(value3)
    label(value4)
    label(value5)
    registersymbol(adresspl)
    registersymbol(value)
    registersymbol(value1)
    registersymbol(value2)
    registersymbol(value3)
    registersymbol(value4)
    registersymbol(value5)
    
    adresspl:
    mov eax,INJECT
    mov eax,[eax+10]
    mov dword [value],eax
    mov eax,[eax+8]
    mov dword [value1],eax
    mov eax,[eax+8]
    mov dword [value2],eax
    mov eax,[eax+8]
    mov dword [value3],eax
    mov eax,[eax+8]
    mov qword [value4],eax
    mov eax,[eax+8]
    mov dword [value5],eax
    ret
    
    value:
    dq 0 0 0
    value1:
    dq 0 0 0
    value2:
    dq 0 0 0
    value3:
    dq 0 0 0
    value4:
    dq 0 0 0
    value5:
    dq 0 0 0
    
    createthread(adresspl)
    [DISABLE]
    dealloc(adresspl)
    unregistersymbol(adresspl)
    unregistersymbol(value)
    unregistersymbol(valuel)
    unregistersymbol(value2)
    unregistersymbol(value3)
    unregistersymbol(value4)
    unregistersymbol(value5)

     

    Но после включения скрипта во время создания потока также получаю краш. Не могу понять, в чем дело.

  5. Всем привет. Недавно мне понадобился скрипт как замена указателя, который бы самостоятельно находил нужную структуру (с координатами) и выводил все адреса оттуда. Делаю его под проектный майнкрафт (но это не сильно важно), при скане инструкций нашел всего 1 статичную, и работает она более чем с 6к адресами (теперь понятно почему), видимо главная инструкция физики, поэтому нужно сделать хороший фильтр. 

    Перейдем сразу к делу, своял скрипт: 

    Спойлер
    
    [ENABLE]
    
    aobscan(INJECT,01 59 48 3B 01 C5 FB 11 04 19) // should be unique
    alloc(newmem,$1000,INJECT)
    label(code)
    label(return)
    label(Value)
    registersymbol(Value)
    label(Value1)
    registersymbol(Value1)
    label(Value2)
    registersymbol(Value2)
    label(Value3)
    registersymbol(Value3)
    label(Value4)
    registersymbol(Value4)
    label(Value5)
    registersymbol(Value5)
    
    
    
    newmem:
    cmp dword ptr [rcx+8],F806436A // (hex) фильтр на порядковый номер ячейки памяти структуры (может измениться при обновлении игры или редко после краша)
    cmp dword ptr [rcx+40],5 // фильтр на конец структуры
    jne code
    add rcx,10 // смещение от начала структуры до 1 координат
    mov qword [Value],rcx // запись в метку double значения
    add rcx,8 // до 2 координат
    mov qword [Value1],rcx // запись в метку
    add rcx,8 // до 3 координат
    mov qword [Value2],rcx // запись в метку
    add rcx,8 // до 4 координат
    mov qword [Value3],rcx // запись в метку
    add rcx,8 // до 5 координат
    mov qword [Value4],rcx // запись в метку
    add rcx,8 // до 6 координат
    mov qword [Value5],rcx // запись в метку
    sub rcx,38 // приводим rcx в изначальное положение чтобы ничего не сломалось
    
    
    
    code:
      vmovsd [rcx+rbx],xmm0
      jmp return
    
    
    
    Value:
      dq 0 0 0 0
    Value1:
      dq 0 0 0 0
    Value2:
      dq 0 0 0 0
    Value3:
      dq 0 0 0 0
    Value4:
      dq 0 0 0 0
    Value5:
      dq 0 0 0 0
    
    INJECT+05:
      jmp newmem
    return:
    registersymbol(INJECT)
    
    [DISABLE]
    
    INJECT+05:
      db C5 FB 11 04 19
    
    unregistersymbol(Value)
    unregistersymbol(Value1)
    unregistersymbol(Value2)
    unregistersymbol(Value3)
    unregistersymbol(Value4)
    unregistersymbol(Value5)
    unregistersymbol(INJECT)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: 19995A7A268
    
    19995A7A245: 48 83 C4 10                    - add rsp,10
    19995A7A249: 41 0F B7 5D 01                 - movzx ebx,word ptr [r13+01]
    19995A7A24E: 48 8B 4D D0                    - mov rcx,[rbp-30]
    19995A7A252: C1 E3 02                       - shl ebx,02
    19995A7A255: 8B 54 D9 28                    - mov edx,[rcx+rbx*8+28]
    19995A7A259: 48 8B 5C D9 20                 - mov rbx,[rcx+rbx*8+20]
    19995A7A25E: C1 EA 15                       - shr edx,15
    19995A7A261: 83 E2 01                       - and edx,01
    19995A7A264: 59                             - pop rcx
    19995A7A265: 48 3B 01                       - cmp rax,[rcx]
    // ---------- INJECTING HERE ----------
    19995A7A268: C5 FB 11 04 19                 - vmovsd [rcx+rbx],xmm0
    // ---------- DONE INJECTING  ----------
    19995A7A26D: 85 D2                          - test edx,edx
    19995A7A26F: 0F 84 06 00 00 00              - je 19995A7A27B
    19995A7A275: F0 83 44 24 C0 00              - lock add dword ptr [rsp-40],00
    19995A7A27B: 41 0F B6 5D 03                 - movzx ebx,byte ptr [r13+03]
    19995A7A280: 49 83 C5 03                    - add r13,03
    19995A7A284: 49 BA 20 24 0A 74 00 00 00 00  - mov r10,jvm.dll+D72420
    19995A7A28E: 41 FF 24 DA                    - jmp qword ptr [r10+rbx*8]
    19995A7A292: 66 0F 1F 44 00 00              - nop word ptr [rax+rax+00]
    19995A7A298: 00 00                          - add [rax],al
    19995A7A29A: 00 00                          - add [rax],al
    }

     

     

    Структура, к  которой надо приаттачиться выглядит следующим образом:

      unknown.png?width=400&height=152

     

     

    Добавил в таблицу, включил и увидел бред: 

    unknown.png?width=400&height=77

     

    Начал разбираться что не так, подрубил трассировку на начало кода в newmem и вижу следующее:

     unknown.png?width=400&height=286unknown.png?width=400&height=286 

     

    В итоге скрипт всеми силами не хочет замечать нужную структуру, аттачится вообще не туда куда нужно (все 20 раз которые я пробовал), сравнивает данные и делает прыжок на родной код. Если объясните что тут вообще происходит и поможете, буду очень признателен)

    P.S. Тему мог запостить в неправильный раздел, если это так, то прошу уточнить.

  6. В 28.04.2021 в 20:51, Xipho сказал:

    Самый тупой вопрос, но я забыл его озвучить - такая проблема наблюдается только с одной игрой, или со всеми?

    Перепроверил на всех других установленных играх (в т. ч. тех, в которых на предыдущей винде тоже багалось) - все хорошо.

    Формально ошибка исправлена переустановкой системы (можете накинуть + за меня квазимадо), но я все же буду пытаться как-то заставить работать кубы с заморозкой которые на видео. 

    Это из-за системы защиты 100% с учетом того, что она начинает работать полностью на всех окнах, в итоге цепочка примерно такая:

     

    Запускается exeшник игры и начинает работать вместе с системой защиты от ботов (с контролем устройств ввода)    --    я замораживаю процесс игры, а вместе с ней морозится и система защиты    --    т.к. она контролирует мышь и клаву, по накатанной фризит и их.

     

    Осведомлен ведь был об этой защите, но не хотел признавать и идти длинным путем.

    Я не знаю с чего начать, покурю матчасть и попробую ее отключить, если мне будет по силам, и параллельно пробую обойти запуск на виртуальной машине - это может еще пригодиться.

  7. 54 минуты назад, Kvazimado сказал:

    У меня такая проблема была, решилась...переустановкой системы.

    Чтобы не рубить с плеча, я бы попробовал поставить ВиртуалБокс, на него чистую систему, СЕ и игру (драйвера по вкусу) и проверил бы, останется проблема или нет.

    Я могу, конечно, переустановить систему 3 раз (уже на семерку), где баг в теории должен исчезнуть, но сомнительно (как-нибудь сделаю при большом желании на отдельном диске чтобы не терять новую 10 шинду). По поводу виртуальной машины - против нее стоит защита в лаунчере на обнаружение hyper V и такой способ даже на костылях не покатит.

    P.S. Только что прочекал гугол и нашел возможные способы обхода этого для ВМ с использованием консоли, пардон, буду пробовать и тестить.

  8. В 23.04.2021 в 01:02, youneuoy сказал:

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

    Прошу прощения за тупость (ведь мои познания в дебаггере крайне малы и кроме как не по пунктам мне будет трудно понимать), но как это сделать? В настройках бряка перепикал и протестил все галки как на ввод, так и на вывод - забаг не исчез. Более того, я не нашел настройки, отключающей автоматическую паузу игры при аттаче (bruh)  Но могу ли я, используя горячие клавиши в паре с костылями, самостоятельно ставить бряки на игру? Попробую также поставить scyllahide в качестве модуля, вдруг магическим образом поможет, хотя... вряд ли.

  9. 8 часов назад, Xipho сказал:

    Когда эти лаги начинают, проц в соточку не долбится? И да, лишним не будет указать, какое у тебя железо...

    Китаец: 

    мп huanan 3.5b

    xeon e5 2690 v1

    32 gb ecc reg (полностью отключил эти функции в биосе, думал виновны, но результатов не принесло)

    gtx 1070 ti

    2 ссдишника под систему и под файлопомойку.

     

    7 часов назад, Xipho сказал:

    Но вопрос железа и свежести драйверов (в частности, на видяху) остается открытым. Поясню. Подобное поведение зачастую связано с затормаживанием видео оверлея. 

    Дрова самые свежие. По поводу видео оверлея - я тоже очень хотел бы считать, что в данном косяке виновен nvidia expirience , container и др. службы захвата и записи игр от нвидии и считал их главными подозреваемыми (тем более у меня пишутся лучшие моменты длительностью 20 минут на этой проге). Что в итоге сделал - поотключал все оверлеи в настройках экспириенса, выключил нвидивские службы полностью (и также убедился в этом с помощью диспетчера после перезагрузки пк), но результата это не принесло, хоть надежды и были высоки... Дальше у меня пошли бессмысленные попытки проанализировать, что еще из прог может писать экран и последовательно отключать (типа дискорда, лайтшота (лол), стима), из системного же все подозрительное и так было вырублено и неактивно в стоке.

     

    7 часов назад, Xipho сказал:

    И тут либо игра настолько эксклюзивно захватывает оверлей (чего не должна делать в оконном режиме), что на обновление остальной части рабочего столе тупо не остается ресурсов, либо игра замыкает на себя обработку всех оконных сообщений (что тоже больше попахивает бредом), либо, возможно, кривые драйвера на видяху.

    Посмею уточнить - дело даже не в обновлении частоты моника, а в невероятно слабом отклике (или грубо говоря забаге) мыши и клавиатуры -  клик проходит спустя секунд 15-20, как и сочетание ctrl+alt+del на клаве. Это видно уже по нормальному рабочему таймеру на x64dbg. По поводу самой игры скажу, что при включении (даже за пределами ее родного окна) начинает работать так называемая защита от ботов, и все "не железные" сигналы блочатся и на клаве, и на мыши, аналогично и с передвижением указателя. Так что виновников кроме самой игры больше не осталось... 

  10. В 25.04.2021 в 21:51, SerVick сказал:

    Вообщем не знаю поможет, или нет. Но личным опытом поделюсь. Думаю у тебя проблема не в СЕ, "Оле", или других отладчиках. Возможно у тебя установлен какой то левый софт, типа мониторинга... 

    Хм, возможно какая-то встроенная прога шиндовса, т к сидел я изначально на LTSB  2016 года, совсем недавно обновился до самой новой версии 10 прошки (от флибустьера). Прог для мониторинга (которые тем более работают скрытно) как таковых нет, да и сейчас у меня минимальнейший список всех программ после перехода, еще не успел засрать.? Нужно прошерстить встроенные функции шинды на контроль и пр. Если найду источник проблемы - отпишусь сюда.

  11.  

    Всем привет. Относительно недавно начал изучать матчасть по CE, и вместе с этим мне не дает покоя один бесящий косяк, из-за которого мне не удается отыскать некоторые значения, которые находятся лишь в паре с заморозкой, или, к примеру, применить поиск указателей через дебаггер по видосу кенга. Перейдем к сути:

     

    https://youtu.be/U2sZNnfE6Zw

     

    Показал ошибку в кубах (STALCRAFT), где она наиболее выражена. В других играх эффект практически аналогичен, где-то курсор багается поменьше, где-то побольше. Разницы при попытке юза другой фризящей проги - ровно 0. Все одинаково лагает как на Cheat Engine, ollydbg, так и в богом забытом process hacker'e. Попытался сгладить углы с помощью разморозки горячими клавишами, например, в том же CE, но клава тоже тормозит, и иногда даже хуже мыши - отклик с горячих клавих от нажатия до разморозки от 30 секунд до минуты, что никуда не годится. При заморозке простых окон какого-нибудь гугла и прочего - мышь двигается полностью исправно. Что еще хочу подметить - при прожатии ctrl + alt + del и входе в окно перед диспетчером - курсор полностью отбагивается и работает нормально, значит ключ к решению скрывается где-то в системе работы окон шинды, но как на нее повлиять - у меня нет ни малейшего понятия. Гугление не дало результата: опробывал все от банального изменения настроек курсора в панели управления, смены быстроты курсора и частоты опроса в кастомной проге мыши, прокрутку неактивных окон и кастомизации окон, вплоть до обновления шинды на самую новую сборку и изменения приоритета производительности в диспетчере на низкий - проблема как была, так и осталась.

     

    Прошу от чистого сердца форумчан о хотя бы малейшей подсказке по моей проблеме, ведь на данный момент я в тупике.

    • Плюс 1
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.