Просили? Выкладываю. Не мое абсолютно, но вот оно



Просили? Выкладываю. Не мое абсолютно, но вот оно
Урок получился частично философским, чем реверсерским, вот как-то так случайно…
Я когда-то об этом писал (копия), но тут клиент. которому очень нравится именно это софтина сказал, что мой враппер из вышеозначенного примера, сожрал антивирь. Чо, антивирь жрет программу, которая просто ничего не делает? Охуеть теперь.
Суть в том, что нужно отключить обновлятор, тому ще жиды из Foxit удалили в новых версиях виртуальный PDF-принтер, а обновление можно установить случайно.
Вокруг бегают дети с вопросом: «ну дай нам что-нибудь самим пореверсить!»
Я им, конечно же, сначала дал задание — выдрать псевдографические цифры (копия) v2 (копия) из DOS-будильников.
Но особо активные дети, это же как черти у ведьмы — если им не давать заданий, то мозги вынесут, нужно отправлять на пляж песчинки пересчитывать, за неимением лучшего. Вот идите сами и реверсите, вполне реальное техзадание вот вам, заодно и денежку заработаете.
И пока я немедленно выпил, дети отреверсили! Подсказал, им, правда, что нужно найти функцию в упдатере, которая отвечает за соединение с интернетами, а остального не подсказывал.
Довольно быстро нашли в Names в IDA нужную функцию WinHttpOpen
, а в коде нужный кусок:
call ds:WinHttpOpen mov ecx, eax mov [ebp+var_12C0], ecx cmp ecx, ebx jnz short loc_4179B8 call ds:GetLastError mov [ebp+wParam], eax mov [ebp+var_12A9], bl jmp loc_417E28
И догадались, что нужно заnop’ить инструкцию JNZ
по следующему адресу:
0041799F JNZ <addr> --> NOP NOP
в байт-кодах:
0041799F 7517 --> 9090
Догадались, что экзешник нужно пропатчить в двух местах:
"C:\Users\<имя_пользователя>\Application Data\Foxit Software\Addon\Foxit Reader\FoxitReaderUpdater.exe"
"C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe"
Причем, по первому пути FoxitReaderUpdater.exe
может отсутствовать до первого запуска FoxitReader.exe
и в дальнейшем учли это в патче 🙂
ФАНФАРЫ!
Все-таки чтоб все хорошо сработало, рекомендую нижеследующий патч применять сразу после установки, и в самом установщике снять галочку Запустить Foxit Reader. Все-таки дети делали, а я всего проверить не могу.
Естественно, сразу же отправил ребят сделать тогда уж и автопатч на NSIS, по примеру:
по примеру:
Патч на NSIS (с возможностью отмены). (копия)
Они его даже немножечко улУчшили и углУбили, например, перед патчем убивают все процессы, которые могут помешать:
Var /GLOBAL "PROC0"
Var /GLOBAL "PROC1"
Var /GLOBAL "PROC2"
StrCpy $PROC0 "FoxitReader.exe"
StrCpy $PROC1 "FoxitUpdater.exe"
StrCpy $PROC2 "FoxitReaderUpdater.exe"
...
;kill processes
!insertmacro KillProc $PROC0
!insertmacro KillProc $PROC1
!insertmacro KillProc $PROC2
И выводят в конце процесса readme для пользователя, если тот захочет воспользоваться восстановлением вручную. Пример readme:
Updater changed 2023.04.19 5:46:09
Manual restore original files:
If you wish restore patched files manually, copy:
C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe.2023041954609.bak in C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe and in C:\Users\Korak\AppData\Roaming\Foxit Software\Addon\Foxit Reader\FoxitReaderUpdater.exe
You may run Foxit Updater Disable Patch for automatic restore.
— Репозиторий на GitHub
— Скачать патч
Пацаны вааще ребята, почти без подсказок во всем разобрались, и им еще 14. И первые деньги программированием заработали (и плюс я свои).
Охуеть, мы не умрем, в смысле как вид! Всякие пердевшие в фукуяму идут нахуй! И в новостях и политике подростки все понимают.
И минутка НЕНАВИСТИ в конце, ну как же без нее.
Привезли клиенту «мозги» для станка, ЧСХ, китайские, но доехали они почему-то без документации, т.е. простая серая коробочка с девайсом, напоминающим роутер. Два порта, один по специальному кабелю соединяется со станком, во второй — вставляется обычный Ethernet-кабель, который идет на управляющий комп. На «мозгах» три кнопки, как потом выяснилось — старт, экстренный останов и самотест. Надписи иероглифами. Ну ладно, с кнопками разобрались методом тыка.
А вот управляющая софтина оказалась хитроумной, менюшки на английском, а вот хелпа нет, а последовательность команд для резки задается на js-подобном языке, сильно урезанном, только по нему хелпа тоже нет.
Ну хуле делать, пишу производителю шайтан-машины в почту, мол, пришлите мануал.
«Да не вопрос, дорогой уважаемый клиент, айн момент», отвечает мне добрый китайский менеджер, и через время малое, прилетает мне мануал в виде текстового файла и кучи примеров, там даже изящная розочка была, как ее на металле вырезать… На китайском.
Но это полбеды, выглядит этот китайский примерно так: ÖØÐÂÉèÖöÔÏó
То, что это не Юникодовская кодировка, стало понятно сразу. Ну иначе тот же Notepad++ прекрасно бы все показал иероглифами, а дальше уж дело только за гугль-переводчиком.
Пролюбившись целый день с перекодировщиками, китайскими кодировками, задействовав даже Far Manager с его довольно большой базой кодировок, я не получил ровным счетом ничего.
Наконец, пришла идея, а если текстовый файл переименовать в *.html
и скормить его Firefox’у, у него же была довольно неплохая внутренняя определялка кодировок, повыбираю из списка, или же он сам определит.
Определил сам, наконец невнятные кракозяблы ÖØÐÂÉèÖöÔÏó
превратились во вполне внятные иероглифы: 重新设置对象
, что значит всего лишь сбросить объект. Ну а дальше немного смекалки, экспериментов, гугль-переводчика, и ТЕЛЕМАРКЕТ!
Решил я посмотреть какая же все-таки кодировка у файла. И… не нашел меню с выбором кодировок вручную. Оказывается, разкозлоработчики Firefox просто тупо убрали возможность выбора кодировки страницы вручную из браузера.
Кодировка текста больше недоступна в меню Firefox
Какой пиздец! А если ваше поделие таки неправильно кодировку определит, прикажете ехать в вашу штаб-квартиру и ебать вас раскаленным урановым ломом?
Вот жеж бля, от кого не ожидал подставы, дык от Mozilla. И вообще непонятно, нахера так делать?
1. Надо включить Панель меню
2. Зайти в Инструменты —> Сведения о странице (или нажать комбинацию клавиш CTRL+I)
3. В сведениях о странице будет отображена и информация о кодировке:
В последних версиях пока никак, соответствующий задаче плагин пока никто не удосужился написать, может быть Firefox идеально определяет кодировки, а может мозилловцы пока не столкнулись с багом, так что если надо в браузере вручную покрутить кодировки — придется скачивать старые версии, например:
С PortableApps.com (версия 88.1), установщик
Для выбора кодировки вручную, необходимо включить меню, а далее выбрать:
Вид —> Кодировка текста, и далее выбрать нужную кодировку:
Припер шеф в офис телевизор, новый здоровый плоский, чтоб клиентам МУЗ-ТВ или какое другое камеди показывать, мол, пусть будет, как в лучших домах города.
Сразу выяснилось, что коаксиал в офисе есть, но это оказалось не кабельное, а какая-то неведомая фигня, которая, в общем, даже неведомое показывать отказалась, хотя по тестам там даже какой-то сигнал есть, но с ним я ночью поэкспериментирую, вдруг какая Бухта Кэндл или Криполе Чудес после полуночи передается.
Оказалось, железячка не венде (какой-то окончательно порезанной и изуродованной 10-ке), так что довольно быстро научил его показывать из расшаренной Самбы видосы, но, поскольку там одни ужастики 80-х («Извне», «Реаниматор», «Фантомы» и.д.), то для клиентов это не включишь, а за ютупом следить надо, вдруг посреди котиков Невзоров вылезет.
В общем, хуй с ним, сказал начальник, и попросил Большие Красивые Часы на весь экран.
Оказалось, что после небольшого шаманства, железке можно скрамливать неподписанные экзешники, и заливать все что хочешь, на доступный пользователю раздел SSD.
Что-ж, сказал я… И немедленно выпил. А потом сделал часы (ну как сделал, сконвертировал в экзешник(и)).
Clock_1.exe
— часы в стандартном окне (с кнопками развернуть, свернуть и закрыть)
Clock_Noborder.exe
— часы в стандартном окне без заголовка, закрываются ALT+F4 или по щелчку правой кнопкой мыши, выпадет меню с пунктом Exit
Clock_Fullscreen.exe
— часы на полный экран без заголовка, закрываются аналогично предыдущему варианту. Идеальны для стационарного показа на мониторе, телевизоре, старом смартфоне под винду или информационном киоске.
swf\Clock_1.swf
— оригинал программы.
По-прежнему, чиним деньгополдощательные терминалы и всякие прочие АРМ, потому понадобилось, заметка от склероза, чтоб не забыть, да и другим полезно будет.
Рассматриваем способы, как ее вызвать, если доступа к физической клавиатуре нет совсем.
1. ПУСК —> Все программы —> Стандартные —> Специальные возможности —> Экранная клавиатура
2. Добираемся мышекликом до экзешника: %windir%\system32\osk.exe
Где %windir%
— каталог с установленной Windows (обычно C:\Windows
).
Если надо вызвать программу с командной строки (для справки), то соответственно, команда: osk
Примечание: Экранная клавиатура, как и физическая, поддерживает только раскладки клавиатуры (языки ввода) установленные в системе, т.е., если русский язык, например, в системе не установлен совсем, то и переключиться на наго нельзя.
Самый простой. Не пользоваться для переключения языка ввода и раскладки экранной клавиатурой, все спокойно можно делать мышью, с помощью значка индикатора клавиатуры в системном трее.
Щелкаем те же клавиши, которые установлены для переключения клавиатуры в системе, и не задерживаясь, нажимаем ту, с которой начали. Т.е. если переключение клавиатуры настроено на Alt+Shift, то на экранной клавиатуре жмем Alt, потом Shift (или наоборот, сначала Shift потом Alt), а потом возвращаемся к первой клавише, если первой нажимали Alt — нажимаем Alt второй раз, если первый раз нажимали Shift — второй раз нажимаем Shift.
Если в системе установлена комбинация Ctrl+Shift, действия аналогичны, только нажимаем соответствующие клавиши на экранной клавиатуре
Переключение раскладки:
Раскладка переключилась:
ТЕЛЕМАРКЕТ!
Что делать, и как это порешать. AHCI —> IDE. Инструкция для и по просьбе заводского эникейщика.
На многих старых и надежных аппаратах (АРМ станков с ЧПУ, терминалах) вполне может быть установлена Windows XP, свои функции она выполняет, а специализированный софт, например, может не подо что другое не работать. Если вдруг ломается насмерть машина, обычно покупают компьютер, который совместим с XP, но рассчитан на более современную систему.
Но при некоторых условиях, совместимые с XP машины, могут все равно отправить при некоторых ситуациях XP в синий экран. Впрочем, восстановить запуск XP в некоторых случаях возможно без переустановки Windows, подправив настройки BIOS (UEFI).
Первое, что надлежит в таком случае проверить, это не слетел ли BIOS АРМ или встроенного компьютера к начальным настройкам. Если это так, то при загрузке на экране может появиться что-то типа:
CMOS Checkum error
...
Press F1 to Run SETUP
...
В данном случае сначала следует заменить батарейку CMOS, располагающуюся на материнской плате. Как это сделать для стандартного PC есть, например, в этом видео.
Примечание: На некоторых материнских платах батарейка BIOS может оказаться под внешней видеокартой, тогда, перед заменой батарейки, нужно сначала изъять видеокарту из слота.
Примечание: Не забываем про ТБ! Все операции с разборкой системного блока и заменой батареи выполняем при отключенном от сети системном блоке! Видел в некоторых видео, что можно так не делать, так вот отключать от сети нужно всегда! Если случайно закоротите контакты, можно получить или BIOS, требующий перепрошивки, или вообще горелую материнку. Электричество, какое маленькое оно бы не казалось, безалаберности не терпит!
Если у более новых компьютеров обнулился BIOS/UEFI и возвратился к заводским настройкам, то, скорее всего, произошло переключение режима работы контроллера жесткого диска с IDE-совместимого в AHCI, AHCI в XP поддерживается с большим бубном, потому им обычно никто не заморачивается, если особо не надо, переключают контроллер в режим IDE-совместимости и телемаркет. А вот если контроллер переключится обратно сам, после возврата BIOS к заводским настройкам, то XP упадет в синий экран.
1. Заходим в BIOS, на главной странице выбираем Advanced Mode (или нажимаем клавишу F7)
2. В появившемся окне отвечаем OK:
3. Переходим на вкладку Advanced:
4. Выбираем SATA configuration:
5. Нажимаем ENTER и в появившемся меню выбираем IDE:
6. Сохраняем настройки и перезагружаемся (F10)
ТЕЛЕМАРКЕТ!
К сожалению, не во всех компаниях есть сисадмин и даже эникейщик, который способен свою винду проверить на лицензионность, и, если что — запустить последовательно два экзешника. Ще, пришлось делать один экзешник, который можно запустить и он удалит кривой активатор Odin, ответить надо только Да и один раз. Даже перезагружается оно само.
+ Удаляет драйвер SLIC, восстанавливает Реестр и загрузку.
+ Достаточно скачать единственный файл (и запустить его).
+ Проверка на наличие драйвера Odin
+ Перед вносимыми изменениями в систему будет создана точка восстановления.
Но мы запасливые.
Сегодня переустанавливал клиентам винды, ставил бесплатный Foxit PDF Reader, и с удивлением обнаружил, что в новых версиях из комплекта софтины пропала возможность создавать PDF плагинами для Word и Excel, также пропал и PDF-принтер.
Видимо их профессиональная программа Phantom хреново продавалась. И Foxit на этой почве скурвился.
Со злости я даже хотел расковырять инсталлятор и выдернуть оттуда принтер. Но решил лицензионное соглашение не поломать, а перепрыгнуть.
Лицензионное соглашение не мешает распространять старые версии, с принтером, креатором и прочими свистелками. Тем более, что программа работает на XP, и, скорее всего, я выпущу небольшой ролик для развития темы (PDF, DJVU и FB в Windows XP).
А пока нате вам.
Преамбула, или минутка негодования
Вызвали сегодня к старым клиентам с симптомами, мол новый мальчик от провайдера приходил, нам что-то обновил, в черной коробочке покопался и теперь ничего не работает. «Черная коробочка» — это и есть тот самый DIR-300. С 2011-го «черная коробочка» нареканий не вызывала. Приезжаю, действительно вижу, что ничего не работает, да еще и пароль на вход в админку поменян. Фигня война, сбрасываю к заводским настройкам, захожу в админку роутера и вижу ЛЮТЕЙШИЙ ПИЗДЕЦ, ад и Израиль, крипоту почище Сайлент Хилла.
Сраный хипстер из провайдера действительно обновил прошивку, и, что самое ужасное, в прошивку оказались внедрены бэкдоры (официально «дополнительные сервисы») от главных спамеров, доставщиков гнилой шавермы и рабовладельцев Роисси. Да, не поверите — страшный сон любого админа, теперь не только Яндекс.Браузер, который пытается всеми правдами и неправдами пролезть на десктоп, но и Яндекс.Бэкдор в роутере.
Чуть челюсть не отвалилась. Это ж до какой ручки дошла когда-то уважаемая компания DLink, что связалась с Яндекс.Спамом? Но это полбеды. Яндекс.Скам еще и мешал нормальной работе роутера.
Выдал я такое, что дохлый основатель Хуяндекса завертелся в гробу, и принялся откатывать все назад. Слава Ктулху и Великим Древним, что я компьютерный Плюшкин, и таки нашлась у меня нормальная прошивка, сделанная до того, как DLink продался Яндекс.Сволочам.
Откатил, все заработало.
Яндекс.Спам, Яндекс.Срам, Яндекс.Дерьмо, Яндекс.Хуесосы.
Чтоб вы все нахуй сдохли, суки.
DIR-300A_C1
Заодно уж и мастер настройки DLink Click’n’Connect с оригинального диска
Раз уж пошел разговор про wget
(копия), решил я заодно дополнить добрым людям скрипт какими-нибудь осмысленными сообщениями об ошибках, а для того нужны коды завершения.
Кто-то, неизвестно почему, утверждал, что в man их нет. Есть. Но пусть уж будут и тут, и мне от склероза, и мало ли кому другому, кто не любит на буржуйском читать.
0
— OK (ошибок нет)
1
— Иная / общая ошибка (generic error code)
2
— Ошибка в параметрах командной строки или файлах конфигурации (.wgetrc
или .netrc
)
3
— Ошибка файлового ввода/вывода (I/O error)
4
— Ошибка сети (например, при обрыве связи)
5
— Ошибка SSL
6
— Ошибка идентификации (неправильное имя пользователя или пароль)
7
— Ошибка протокола
8
— Ошибка сервера (например, нужный файл на сервере не найден, ошибка 404)
За исключением 0
и 1
, коды выхода с меньшими номерами имеют приоритет над кодами с большими номерами, когда встречаются многочисленные типы ошибок.
Написали тут с вопросом, мол виснет у нас программа, почему никто не знает, кто ее писал уволился давно, поможи. Ну от чего же не помочь. Программа оказалась башевским скриптом, точнее, набором скриптов. Задача небольшая, выгрузить файл с удаленного сервера, переформатировать и положить на другой сервер, где его подхватывает бухгалтерия. Выгрузка делалась банальным wget
.
Оказалось, скрипт вис, если пропадало соединение с сетью.
Выгрузка производилась простой командой:
wget -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat"
Оказывается, у wget
не проставлен тайм-аут ожидания, а по умолчанию, если его не проставить, wget
будет ждать аж 900 секунд (15 минут). Надо, соответственно, его напрямую указать в параметре ключа -T <секунды> (--timeout=<секунды>)
,
Например, можно поставить вменяемые полминуты (30 с.):
wget --timeout=30 -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat"
Т.е. вис-то, собственно wget
, хотя конечно же, не вис, а терпеливо ждал. Но тут и не бухгалтеру, а даже не сильно опытному пользователю ничего не стоит принять такое поведение за то, что wget
виснет при разрыве соединения.
Заодно можно указать wget
‘у количество попыток для скачивания файла: -t <число>
(--tries=<число>
), тем более, что указание параметра -O
(имя выходного файла) сбрасывает этот параметр в 1.
wget --timeout=30 --tries=3 -O "~/buh01/data/kassa01.dat" "https://example.org/mag01/kassa.dat"
Понадобилось для работы. Современная MacOS такие концы строк не использует, а некоторое ПО, для совместимости со старыми маками (LC II/LC III) их еще использует. И сами маки в качестве терминалов для наблюдения за датчиками погоды еще юзаются. И живые. Я на таких учился в школе.
Это же аптайам > 20 лет, хуясе. Сии компьютеры младше меня на 5 лет всего. А по характеристикам Intel 486DX 286, ну 386 в лучшем случае, а на них есть оконный интерфейс. Правда, консоли нет и коды ошибок уже не найти (а там скудные сообщения об ошибках — messagebox с кодом).
cat "file.txt" |tr '\015' '\012' >"file2.txt"
Чтоб не пролюбилось, мало ли с официального сайта пропадет, а понадобится:
Делал, чтоб клиенту меньше ручками работать. Теперь не надо самому определять версию винды, и вытаскивать нужный devcon из архива соответственно.
Предыдущий я сделал на Inno Setup, но Inno Setup оказался той еще заразой, нихрена он версию Винды толком определить не мог, и тихой сапой подкладывал во все винды один и тот же devcon, который подходит для Windows 7 и выше. От чего у клиента с виндой XP x64 произошел адский баттхерт, так, что забрызгало пол-Петербурга, аж до моей деревни брызги долетели. Видимо, клиент меня проклял, потому что мне на ногу упал топор (слава Ктулху обухом), у меня упали форточки, точнее форточка, но стеклянная и на пол, ко мне какого-то черта приперлась лесная охрана и стала [РОСКОМНАДЗОР], и я после этого [РОСКОМНАДЗОР] в результате, теперь страдаю [МИНЗДРАВ].
Новый сделал на NSIS, но как оказалось — NSIS тоже [РОСКОМНАДЗОР], точнее, не сам NSIS, он мне как раз понравился, за исключением одного странного недокументированного глюка, о котором как-нибудь расскажу, и скрипт-язык, вполне себе такая помесь Бейсика с Башем. А вот документация, это, товарищи, лютый [РОСКОМНАДЗОР] в последней стадии.
Русский мануал к популярному инсталл-мэйкеру писали сто лет назад какие-то [ДАННЫЕ УДАЛЕНЫ] с OSZone.net, еще и назвали свое творение «справочником», хотя что-что а справочники так не делают. Просто плохо структурированные статьи, которые на [РОСКОМНАДЗОР] запихнули в chm-файл. [РОСКОМНАДЗОРКА], поучитесь у того же Исзелиона с wasm.ru, как нужно делать справочники и мануалы. На туториале Исзелиона сотня-другая студентов если не аспирантами стали, так свой зачет по ассемблеру точно получили. Аффтар еще и жалуется на форуме, типа, «ну на[РОСКОМНАДЗОР] обновлять мануал, если его никто не читает, и очевидные вопросы задает». Так [РОСКОМНАДЗОРКА], [РОСКОМНАДЗОРКА], ты так написал этот мануал, что кошка [РОСКОМНАДЗОРОМ] по клавиатуре лучше напишет. Но ладно, я много захотел, русского мануала. Да, согласен. Но теперь «поговорим о влажности в номере», точнее об оригинальной вики от разработчиков.
Оригинальная вики тоже [РОСКОМНАДЗОРНЫЙ], [РОСКОМНАДЗОР] твою мать, [РОСКОМНАДЗОР]. Причем, я вполне себе уверен, что там есть все описания функций языка NSIS, вот только отдельной категории для списка функций нет. Функции потом ищутся гуглем, который выводит на страницу-сироту с вполне нормальным описанием, но [РОСКОМНАДЗОР] знает, почему на эту страницу нельзя попасть из самой вики. В навигации [РОСКОМНАДЗОР] не валялся, в общем без стакана не разобраться. А еще пишут, что «хорошо документированный продукт». Документирован он может и хорошо, но найти в документации что-то конкретное, это как в ГОРФ пойти к чиновнику: «вы мне справку ЕПРСТ-1488 принесли, а надо было ЖПЧШЦ-666», и [РОСКОМНАДЗОР] знает где это написано.
Даже есть мысль как-нибудь выкачать эту вики себе на комп, сделать нормально, попытаться перевести и выпустить в виде справочника.
Впрочем, инсталлер сделал:
Скачать с Mega.nz
С GitHub
Исходник (файлы devcon_all.nsi и gvv.nsi)
А так же ISO-образ Acronis True Image и Puppy Slacko.
Попросили превратить мою заметку про то, как можно пользоваться Acronis True Image без его акронисовского «восстановления при загрузке», превратить в интерактивный скрипт, который делает все то, что описано в заметке, но сам, задавая пользователю наводящие вопросы.
Сделал, чо. Правда, скрипт, наверняка, дичайший быдлокод, но работает без ошибок. Единственное что, предварительно надо создать основной раздел ext2/ext3 на жестком диске, и он должен идти первым. Потом установить винды, сделать линуксовый раздел активным, а потом уже запускать скрипт со всеми потрохами.
Скрипт дико большой, и отдельно его описывать мне откровенно влом, впрочем, в виде отдельных заметок, все самое основное я в этом блоге уже обсуждал.
Эмуляция восстановления при загрузке Acronis True Image с помощью syslinux/extlinux Копия
1. Создание списков (из файлов в каталоге) Копия
2. Простой интерактив в bash-скриптах (запрос Y/N и запрос строки) Копия
3. Простой интерактив в bash-скриптах (меню, списки) Копия
4. Проверка, установлен ли флаг раздела «активный» Копия
5. Определение файловой системы раздела диска в Linux Копия
6. Поиск загрузчика Windows Копия
7. Получение MBR ID и номера раздела, для передачи управления другому загрузчику Копия
8. Число или строка в переменной BASH Копия
Поскольку, наверняка набыдлокодил, то исправления и дополнения приветствуются.
Позвали тут в дружественную конторку, где после очередных обновлений перестал работать какой-то очередной русский инновационный криптопровайдер (не Крипто Про, с ним вроде такой беды не случалось). Оказалось, программулина конфликтовала с кривым активатором ODIN, да-да, винда почему-то тоже оказалась нелицензионной, несмотря на государственный статус этой самой конторки. Пришлось удалять.
А активатор кривой тому ще подсовывает в винду патченное ядро, дабы установить драйвер без цифровой подписи, нужный для эмуляции таблицы SLIC.
На рутрекере, кстати, в хорошей и обстоятельной теме про активацию семерки, предлагали просто создать BAT-файл со следующим содержимым, и запустить его с правами администратора, после чего перезагрузиться:
del "%windir%\system32\drivers\oem-drv64.sys"
del "%windir%\system32\xNtKrnl.exe"
del "%windir%\system32\xOsLoad.exe"
del "%windir%\System32\ru-RU\xOsLoad.exe.mui"
del "%windir%\System32\en-US\xOsLoad.exe.mui"
%windir%\system32\bcdedit.exe /set {current} path \Windows\system32\winload.exe
%windir%\system32\bcdedit.exe /deletevalue {current} kernel
%windir%\system32\bcdedit.exe /deletevalue {current} nointegritychecks
%windir%\system32\bcdedit.exe /deletevalue {current} custom:26000027
reg delete HKLM\SYSTEM\CurrentControlSet\services\oem-drv64 /va /f
Кому-то может и поможет, но мне не повезло, файлы активатора не удалились, reg delete не сработал, потому я просто нашел в дистрибутиве их виды «автоматический установщик» активатора, и просто провернул последовательность действий в обратном порядке.
Получился такой вот CMD-файл
В каталоге с этим батником должен быть подкаталог data, со следующим содержимым:
1. Утилита SetACL.exe, которая будет менять права доступа к ключам Реестра, и восстанавливать их после редактирования. Утилиту взял из того же дистрибутива.
2. Утилитка sleep, но это так, для красоты, моя прихоть.
3. Файлы Реестра (*.reg) для x86 и x64 ОС, в которых прописано, какие ключи удалять anti-oem-drv64.reg anti-oem-drv86.reg
Далее я сделал RAR-SFX с таким сценарием:
;Расположенный ниже комментарий содержит команды SFX-сценария
Setup=Deactivator.cmd
TempMode="Удалить активатор?","Деактиватор"
Silent=1
Overwrite=1
И поставил галочку в дополнительных параметрах SFX, на запрос административного доступа.
После перезагрузки можно удалить файлы активатора, таким вот CMD-файлом.
@ rem echo Этот файл должен быть запущен с правами администратора и после выполнения Deactivator'а
@ rem echo Чтобы окончательно удалить следы активатора нажмите любую клавишу, иначе CTRL+C!
@ rem pause
DEL "%windir%\system32\drivers\oem-drv64.sys"
DEL "%windir%\system32\xNtKrnl.exe"
DEL "%windir%\system32\xOsLoad.exe"
DEL "%windir%\System32\ru-RU\xOsLoad.exe.mui"
DEL "%windir%\System32\en-US\xOsLoad.exe.mui"
DEL "%windir%\system32\drivers\oem-drv86.sys"
@echo "Clean complete."
@pause
И SFX-сценарий к нему:
;Расположенный ниже комментарий содержит команды SFX-сценария
Setup=Cleaner.cmd
TempMode="Выполняйте только после исполнения Deactivator'а, если хотите окончательно удалить следы активации","Окончательная очистка"
Silent=1
Overwrite=1
1. Deactivator.exe
2. Cleaner.exe
Или автозагрузка нужных программ с подключаемых дисков, внешних носителей и сетевых шар.
Возникла тут производственная задача. Некоторые программы, необходимые для работы, находятся на сетевых шарах (либо подключаемых/шифрованных контейнерах), однако, после загрузки рабочей ОС, они должны автоматически запускаться у пользователя. Для примера, на работе это была программа управления станком.
Решая задачу, перелопатил гору литературы, но ничего готового не нашел. В результате написал свой «Менеджер отложенной автозагрузки».
Принцип работы простой, пользователь в этом самом «Менеджере» указывает путь до нужной программы, лежащей, например, на сетевом диске. «Менеджер» установлен на разделе с ОС, и запускается при ее загрузке. При запуске он проверяет через заданный интервал времени, появился ли нужный «экзешник». Если появился — запускает.
По умолчанию программа работает в портативном режиме (т.е. все настройки и список запускаемых программ, хранятся в директории с программой). Запуск без параметров открывает окно настройки, где можно добавить нужные для запуска задачи, а также в отдельном меню установить время проверки доступности задач, прочие параметры и добавить сам менеджер в автозагрузку ОС. Понятно, что менеджер должен находиться на разделе жесткого диска, который доступен ОС сразу после загрузки.
В качестве запускаемой задачи можно указать не исполняемый файл (exe, com, bat, cmd), но и документ, тогда он откроется в ассоциированной с ним программе.
Для исполнения задач, необходимо запустить менеджер с параметром командной строки /run
Основное окно настроек
Опции «Менеджера отложенной автозагрузки»
Окно добавления/редактирования задачи
Cправка по параметрам командной строки
StartupDelayed
/help
StartupDelayed [/run] [/d|confdir <путь>]
— эта справка
/help
/run
— выполнение задач
/d
— запускать в «не-портативном режиме» (конфигурационные файлы в директории %LocalApplicationsData%\StartupDelayed
)
/confdir <путь>
— указать путь к директории с файлами конфигурации
По умолчанию программа будет запущена в режиме конфигурации, и будет искать конфигурационные файлы в директории со своим исполняемым файлом.
Инсталлятор (не портативная версия)
Портативная версия
Исходники на GitHub
А также игры с BAT-файлами.
В Windows 7 (кроме домашней версии), а также и в более ранних (Vista, XP, 2000) версиях присутствуют т.н. стандартные (или скрытые) общие (расшаренные, сетевые) ресурсы, «админские шары». Туда входят локальные диски (имена, например C$, D$, E$
), обнаруженные во время установки, «удаленный Admin» (ADMIN$
) — каталог операционной системы (например C:\Windows
), и специальный ресурс «удаленный IPC» (IPC$
). Все эти ресурсы доступны из локальной сети. При обычном просмотре компьютера в локальной сети, например, через «Сетевое окружение» или в проводнике их не видно, но пользователь, обладающий правами администратора, вполне может получить к ним доступ. В Windows XP или 2000 с этим была большая беда и неприятность, особенно в XP, и особенно, если она была установлена с настройками по умолчанию, а безопасности не было уделено должного внимания. Доступ к этим скрытым ресурсам мог получить любой пользователь в локальной сети, знающий логин администратора, если пароль администратора не был установлен. Часто пароль на основную админскую запись — «Администратор
» банально забывали установить, даже если создавали отдельного пользователя с админскими правами и паролем.
В Windows 7 с этим вроде бы стало получше: Если на ПК, к которому мы пытаемся подключиться, установлена Windows 7 со включенным контролем учетных записей, подключиться к общим ресурсам можно только используя встроенную учетную запись «администратор». Данная учетка должна быть разблокирована и иметь пароль. Подключение под любым другим пользователем, даже обладающем правами локального админа, не пройдет. [1]
Первый вариант. Идем в Пуск —> Все программы —> Администрирование —>Управление компьютером (или нажимаем Win+R и вводим команду compmgmt.msc /s
) и выбираем в появившемся окне в левой колонке Общие папки, а потом Общие ресурсы. Должно отобразиться что-то типа этого:
Другой вариант, ввести в консоли команду net share
.
Должно получиться что-то типа такого (понятно, что у вас буквы дисков будут другие):
Общее имя Ресурс Заметки ------------------------------------------------------------------------------- ADMIN$ C:\Windows Удаленный Admin C$ C:\ Стандартный общий ресурс D$ D:\ Стандартный общий ресурс F$ F:\ Стандартный общий ресурс IPC$ Удаленный IPC L$ L:\ Стандартный общий ресурс N$ N:\ Стандартный общий ресурс Команда выполнена успешно.
Вот что об этом ресурсе говорит официальная справка:
Общий ресурс IPC$ также известен, как подключение пустых сеансов. С помощью этих сеансов Windows позволяет анонимным пользователям выполнять определенные операции, например получать имена учетных записей домена и список общих сетевых ресурсов.
Общий ресурс IPC$ создается службой Windows Server. Этот особый общий ресурс существует для обеспечения последующих именованных каналов подключения к серверу. Именованные каналы сервера создаются для компонентов, встроенных в операционную систему и приложений или служб, которые установлены в системе. При создании именованного канала процессу задается уровень безопасности, связанный с каналом и затем это гарантирует, что доступ предоставлен только для указанных пользователей или групп. [2] [3]
Проще говоря, если IPC$
удалить, то другой компьютер не сможет посмотреть, есть ли на вашем компьютере расшаренные ресурсы. Так же могут отвалиться некоторые системные сервисы. На практике, у меня отвалился доступ только к 1С «Склад» (7.7), который и был мне не особо нужен, давно хотел откосить от забивания и проверки накладных и от материальной ответственности :). Но не стоит так делать на «сервере» 7.7, где в самом простом случае никакого сервера нет, а просто базы лежат в расшаренной папке — скорее всего, отвалится все к penis canis. 🙂
Внимание! Если просто удалить эти ресурсы через Управление компьютером, то при следующей перезагрузке ресурсы восстанут, и придется опять выливать воду из чайника.
На мой взгляд, в XP и ниже это делать надо обязательно, в семерке можно обойтись, но если вы параноик, или, как меня, вас достала какая-нибудь комиссия (да, ФСТЭК и РКН, вдругорядь, не penis canis), то это опять же надо делать.
Необходимо в ключе Реестра
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
добавить следующие значения:
AutoShareServer
и AutoShareWks
типа REG_DWORD
со значением 0
(Windows XP/2000 Proffessional/2000 Server). Вообще где-то надо один, где-то второй, но если добавить оба — ничего страшного случиться не должно. Для семерки тоже должно работать. [4] [5] [6]
После добавления делаем перезагрузку.
Минусы:
— не отключить доступ к IPC$
— вырубается доступ ко всем скрытым шарам, а иногда такую корову полезно иметь самому, для некоторых дисков, и без установки стороннего ПО.
Плюсы:
+ Вырубается быстро и самое основное.
net share c$ /delete
, но так, согласитесь, некрасиво, особенно, если этих самых админских шар десяток, компов сотня, а еще что-то надо кое-где оставить себе любимому. Но на то нам и командные файлы, чтоб сделать «все как ты захочешь».IPC$
. Пример простой, но развивая можно улучшить и углУбить под вашу задачу.Для перебора всех значений (строк) из определенного списка, в BAT/CMD существует оператор (по правилам MS правильнее говорить «внутренняя команда») FOR
, которая на самом деле ведет себя как foreach
в «больших» языках программирования, т.е. перебирает список/массив данных, пока тот не лопнет кончится.
Общий синтаксис:
FOR %переменная IN (набор) DO команда [параметры]
[7]
Чтобы вся магия у нас получилась, перед использованием FOR выполним такую команду:
Setlocal EnableDelayedExpansion
Обычно, в командных файлах команда FOR используется не только для разбора данных, но и их обработки, что требует использования переменных внутри цикла FOR. И здесь возникает проблема — изменения значений переменных не происходит, т.е. их применение внутри скобок невозможно. Подобное явление вызвано не логическими предпосылками, а всего лишь определенными особенностями реализации командного процессора CMD.EXE [7]
Использование Setlocal EnableDelayedExpansion
позволяет использование переменных внутри цикла FOR
, правда, не совсем. Но об этом далее.
Теперь разберемся откуда брать список. FOR
может обрабатывать вывод заданной команды, если использовать его таким образом:
FOR /F %переменная IN (набор) DO (
command1 [parameters]
command2
. . .
)
и вместо набор
вставить 'команда'
, где:
'команда'
— любая команда Windows, выводящая на консоль некую информацию (не забудьте одинарные кавычки).
/F
— указание команде FOR
обрабатывать список значений, файлов или вывод команды.
В параметрах команды FOR
можно задать разделитель полей. Для этого нужно указать в качестве параметра следующую конструкцию:
delims=xxx
— набор разделителей между обрабатываемыми элементами строк. По умолчанию, в качестве разделителей используются пробелы и знаки табуляции. [7]
Если разделитель не задать, то FOR
дойдет до первого пробела или табуляции, все остальное выкинет, и перейдет к следующей строке. Т.е. в нашем случае получим:
for /F %%i In ('net share') do ( echo !ITEM! )
и вывод:
Общее ------------------------------------------------------------------------------- ADMIN$ C$ D$ F$ IPC$ L$ N$ Команда
Внезапно, почти то, что нам надо!
А надо нам отключить админские шары, а они выделяются на общем фоне — у них внутри неонка в конце имени $
. Надо теперь отделить зерна от плевел.
Итак:
1. создадим переменную при помощи SET
, и присвоим ей исходный текст set V1=mother
(имена переменных учитывают регистр, имена команд нет).
2. Сделаем следующее:
set V2=%V1:her=%
где her
— подстрока, которую надо найти. Если в переменной V1
будет подстрока her
, то в переменной V2
окажется подстрока moth
(т.е. содержимое переменной V2
без указанной подстроки).
Чтобы проверить, содержит ли строка из переменной V1
подстроку, заданную в пункте 2, надо сравнить результирующие строки. Если они НЕ равны — строка V1
содержит подстроку her
.
if NOT %V1%==%V2%
Оказывается, IF
внутри FOR
не работает, точнее не принимает переменных, не в виде % ITEM%
, не в виде %%ITEM%%
, не в виде !ITEM!
. Как только я не перепробовал (может дурак все-таки я, кто знает — поправьте). Но пока не поправили, пришлось ухищряться.
В BAT-файле можно создавать подпрограммы, кривые, косые, но подпрограммы.
Вызываются они так call :метка параметр1 параметр2 ...
После окончания основного файла делается так. Ставится метка подпрограммы, далее идут команды, в конце ставим еще одну метку, например :eof
.
В конце основной программы ставим goto :eof
Параметры, переданные этой недоподпрограмме, внутри видятся точно также, как и внешние параметры BAT-файла, т.е. %1
, %2
. Только в подпрограмме.
После выполнения подпрограммы начинает выполняться следующая команда после call
, у нас это новая итерация цикла.
А в подпрограмме мы как раз и производим сравнение, и если нашли символ $ — запускаем команду удаления ресурса:
:check set V1=%1 set V2=%V1:$=% if NOT %V1%==%V2% ( echo %V1% net share %V1% /delete ) :eof
@echo off Setlocal EnableDelayedExpansion for /F %%i In ('net share') do ( set ITEM=%%i call :check !ITEM! ) goto :eof :check set V1=%1 set V2=%V1:$=% if NOT %V1%==%V2% ( echo %V1% net share %V1% /delete ) :eof
Можно скопировать код с PasteBin [10] или Mega.nz [11]
С автозагрузкой получается странная штука, на форумах подобный батник советуют просто кинуть в автозапуск и забыть. Может на XP/2000 так и сработает, но на Windows 7 тут кардинальное отличие.
1. Такой батник надо запускать от администратора (пользователя из группы «Администраторы
«)
2. Будет заебно заставлять главбуха каждую загрузку подтверждать UAC
3. Сразу дерево почему-то не жужжит, скорее всего, потому что сетевой подсистеме требуется время на запуск, который происходит после входа пользователя в систему. А до этого команда net
не работает.
Но тут на помощь пришел опять «Планировщик заданий».
Как в статье про запуск программы без сообщений UAC от имени администратора [12] [13], мы также добавляем наш батник в «Планировщик заданий», но на этот раз, создавая задание, переходим еще и на вкладку «Триггеры«. Добавляем триггер, и откладываем запуск задачи (батника) на 30 секунд. Значение 30 секунд установлено исключительно экспериментально и не на совсем говенной машине, возможно, вам потребуется больше. Ставьте минуту/две.
1. Общие ресурсы Windows 7 Копия
2. Общий ресурс IPC$ и поведение пустых сеансов в Windows
3. IPC$ share and null session behavior in Windows
4. Скрытые административные и общие сетевые ресурсы в Windows XP/2000 C$, ADMIN$, FAX$, IPC$, PRINT$
5. https://www.securitylab.ru/forum/forum18/topic15107/
6. Удаление стандартных общих ресурсов C$, ADMIN$, IPC$ Копия
7. Команда FOR КОПИЯ
Обсуждения на форумах:
8. Доступ к сетевым шарам в Windows 7
9. IPC$
Код:
10. Код на PasteBin
11. Код на Mega.NZ
12. Отключение запроса UAC для отдельных приложений
13. Отключение запроса UAC для отдельных приложений