Показать полную графическую версию : Как скрыть исходный код bat
k0mar, батник с паролем администратора внутри - неправильный.
NikolayHAOS
24-03-2016, 10:14
Кстати задача (восстановление настроек мозиллы) решена простым восстановление файлов профиля при загрузке/перезагрузке системы.
Через планировщик заданий запуск bat-файла, со скрытым содержанием кода и выполнения, просто висит черное окошечко с надписью подождите.
Все гениальное просто. (с)
Сам не силён в програмировании, да и проблемный кусок не понимаю как работает. Потомучто и решение это нашлось чудом, не на одном форуме не нагугливалось.
В общем надо запутать батник от чужих глаз. Есть одна длинная строчка в виде набора знаков, вот пусть она в куче себе подобных затеряется.
Цели шифровать нет, потомучто этот батник создаёт вполне очевидный файл где всё и так видно, так что в него просто никто не полезет. В общем то его и вовсе можно удалять после первого запуска.
Нагуглил такой (https://ru-sfera.org/threads/obfuskator-bat-fajlov.2695/) обфускатор. Там 2 варианта одного и тогоже, уж по всякому я его изъездил, и расшифровщик. Причём расшифровывает он хорошо, но командная строка после такой обфускации понять не может.
Нашёл ещё такой (https://github.com/guillaC/JSBatchobfuscator). Проблемы все теже.
исходный код
goto метка
:меткапосле обфускации
goto %каша+из+переменных%
:%каша+из+переменных%система понимает только так
goto %каша+из+переменных%
:меткаметка не может быть переменной
Проблема распутать %~d0%~p0
Как она работает я не знаю, но лучших решений нет.
echo > "%~d0%~p0file.txt"отправляет файл в папку рядом с батником, причём даже если к батнику ведёт ярлык или рабочая папка другая.
Ну а получается фигня
@echo off
set tjqzzpgfhb=s
%tjqzzpgfhb%et tlpiwpyeum=e
%tjqzzpgfhb%%tlpiwpyeum%t xrnxrlekgw=t
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% dqyfmeuijj=a
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% ghlqqcobnc=b
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% kpjoiylgmw=c
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% dlzpsfkjko=d
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% rouwdrceoj=e
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% tfhggovysc=f
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% eyjmndevgu=g
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% rjvfjrsfpo=h
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% lxuujxvuji=i
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% hddwxbduxc=j
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% swfceqmslv=k
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% ehqwaezcvp=l
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% yvqlzjdqoi=m
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% blevdhwjsb=n
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% fubtvdtorv=o
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% rfmmrrhyap=p
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% mtmbqwknti=q
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% ojalttegxb=r
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% ssxjlpblwv=s
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% fdichdovfp=t
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% zrirhjsjyj=u
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% chvckglccc=v
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% gqtzccjhbw=w
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% zmjbnjikao=x
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% mpeixwzgej=y
%tjqzzpgfhb%%tlpiwpyeum%%xrnxrlekgw% pfrsbttzic=z
%rouwdrceoj%%kpjoiylgmw%%rjvfjrsfpo%%fubtvdtorv% > "%~%dlzpsfkjko%0%~%rfmmrrhyap%0%tfhggovysc%%lxuujxvuji%%ehqwaezcvp%%rouwdrceoj%.%fdichdovfp%%zmjbnjik ao%%fdichdovfp%"Следующее использование оператора пути при подстановке параметров
в пакетных файлах является недопустимым: %~%dlzpsfkjko%0%~%rfmmrrhyap%0%tfhggovysc%%lxuujxvuji%%ehqwaezcvp%%rouwdrceoj%.%fdichdovfp%%zmjbnjik ao%%fdichdovfp%"
Для просмотра списка допустимых форматов введите CALL /? или FOR /?
Ошибка в синтаксисе команды.Кусок %~ просто подрисовывается перед переменной и система это не понимает
echo > "%~%dlzpsfkjko%0%~%rfmmrrhyap%0%tfhggovysc%"
set c=2
set d=3
>>t echo x.x("""c:f"" f -a i:1 -b %c%.%d%"),0результатx.x("""c:f"" f -a i:1 -b 2.3"),0@echo off
set foanbcizmq=s
%foanbcizmq%et evhprclgoa=e
%foanbcizmq%%evhprclgoa%t henyezctqj=t
%foanbcizmq%%evhprclgoa%%henyezctqj% yywpsjnhyx=a
%foanbcizmq%%evhprclgoa%%henyezctqj% smvesoqwrq=b
%foanbcizmq%%evhprclgoa%%henyezctqj% vcjovmjpvj=c
%foanbcizmq%%evhprclgoa%%henyezctqj% zlgmnihuud=d
%foanbcizmq%%evhprclgoa%%henyezctqj% shwnypgxsv=e
%foanbcizmq%%evhprclgoa%%henyezctqj% mvwcxujlmp=f
%foanbcizmq%%evhprclgoa%%henyezctqj% ibfemyrlaj=g
%foanbcizmq%%evhprclgoa%%henyezctqj% tuhktnajoc=h
%foanbcizmq%%evhprclgoa%%henyezctqj% ffseobntxw=i
%foanbcizmq%%evhprclgoa%%henyezctqj% atssohrirp=j
%foanbcizmq%%evhprclgoa%%henyezctqj% vzbvclyifk=k
%foanbcizmq%%evhprclgoa%%henyezctqj% gsdbjahguc=l
%foanbcizmq%%evhprclgoa%%henyezctqj% sdoufovqdw=m
%foanbcizmq%%evhprclgoa%%henyezctqj% nrojfuyewp=n
%foanbcizmq%%evhprclgoa%%henyezctqj% qhbtirsxai=o
%foanbcizmq%%evhprclgoa%%henyezctqj% uqzranpczd=p
%foanbcizmq%%evhprclgoa%%henyezctqj% gbkkwbcmiw=q
%foanbcizmq%%evhprclgoa%%henyezctqj% apkzvggbbq=r
%foanbcizmq%%evhprclgoa%%henyezctqj% dfxkzdzufj=s
%foanbcizmq%%evhprclgoa%%henyezctqj% hovhraxzed=t
%foanbcizmq%%evhprclgoa%%henyezctqj% tzgbnnkjnx=u
%foanbcizmq%%evhprclgoa%%henyezctqj% ongpmtnxhq=v
%foanbcizmq%%evhprclgoa%%henyezctqj% qdtapqhqlj=w
%foanbcizmq%%evhprclgoa%%henyezctqj% umqyhmevjd=x
%foanbcizmq%%evhprclgoa%%henyezctqj% nhgzstdyiv=y
%foanbcizmq%%evhprclgoa%%henyezctqj% blbgdgvtmq=z
%dfxkzdzufj%%shwnypgxsv%%hovhraxzed% %vcjovmjpvj%=2
%dfxkzdzufj%%shwnypgxsv%%hovhraxzed% %zlgmnihuud%=3
>>%hovhraxzed% %shwnypgxsv%%vcjovmjpvj%%tuhktnajoc%%qhbtirsxai% %umqyhmevjd%.%umqyhmevjd%("""%vcjovmjpvj%:%mvwcxujlmp%"" %mvwcxujlmp% -%yywpsjnhyx% %ffseobntxw%:1 -%smvesoqwrq% %%vcjovmjpvj%%.%%zlgmnihuud%%"),0
на выходе получаем хреньx.x("""c:f"" f -a i:1 -b %vcjovmjpvj%.%zlgmnihuud%"),0
Я пытался втыкать переменные в чистом виде, 10 строк кучкой. Переписывать метки штуки 3.
Но вот на последнем я понял что после такого обфускатора, где половину чистого кода каждый раз втыкать надо, толку мало.
У меня лучше получилось сложить строки пирамидкой по длине и перелинковать метками, густота весьма плотненькая.
Встречал кто нормальные решения или может знает как написать батник чтоб эти баги не появлялись ?
@echo off
:: Если вставлена флешка и на ней есть файл "file.txt", а в нем содержимое 3й строки совпадает с введенным паролем, то произойдет запуск файла, записанного в 5й строке
set "f=file.txt"
set/p n="Введите пароль: "
for /f "tokens=2 delims==" %%a in ('wmic logicaldisk where ^(drivetype^="2" and mediatype^=null^) get name /value^|find "="') do set "disk=%%a"
<"%disk:~,2%\%f%" (more +2|set/p x=^&cmd/v/c "if "!x!"=="%n%" <"%disk:~,2%\%f%" (more +4|set/p y=^&cmd/v/c echo:start "" "!y!")")
pause>nul
LEmiD, задавай запуск батника ярлыком с указанием чего-то в командной строке - одного или нескольких параметров. К ним обращайся изнутри через %1 и т.д. Неавторизованный запуск батника без оных параметров, равно как и парсинг без знания сути передаваемого будет бесполезным настолько, насколько у тебя хватит фантазии)
Занялся секосом с явовым, он до безобразия примитивен, но улучшить знаний не хватает. Только сделал его стабильным чтоб в любой момент строки в батник дописывать.
В общем результат мне оказалось проще прочитать по подсветке, а вот для софта он оказался очень упоротым.
Первый расшифровщик его не понял.
N++ тоже не может поиском найти ничего в этой билибирде, может пора его обновить.
Явно видно только некоторые команды инициализации вроде set goto и меток.
Посмотрел это дело в первых обфускаторах, там это прячется между переменными которые не заданы, видимо для системы это пустая строка.
А вот с переменными у него лучше чем у явового, который портит их всех.
Не разбирался как сделано, но после раскодировки переменные путей превращаются в значения, возможно они заранее подменяются из set, у явового просто тройные проценты не понятные системе.
Может хоть с синтаксисом батников разберусь :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.