1. Pascal / Говнокод #25044

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    procedure SelfDelete;
    var
      S,SS:string;
    begin
      SS:=ParamStr(0);
      S:='/c for /L %f in (1,1,100000) do if exist("'+SS+'") del /q /f^"+SS+" else exit';
      ShellExecute(0, nil, 'CMD', @S[1],nil, SW_HIDE);
      FatalAppExit(0,"Админ, забань борманда")
    end;

    Великий конспиратор продакшн.

    Запостил: blackray, 01 Ноября 2018

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

    • > FatalAppExit(0,"Админ, забань борманда")

      Анус запеканус?
      Ответить
    • writeln('Стертор, иди в жопу');

      слушате
      а што, в дельфях до сих пор надо переменные оьъявлять строго в начале, в блоке var?!
      Ответить
      • Кого сейчас ебёт язык для школьников?
        Ответить
      • Да. Если нужны более локальные переменные, то нужно объявлять вложенную функцию (к счастью, это было возможно ещё в Турбо Паскале).

        P.S. В каком-то из Delphi XE появились замыкания, так что можно попробовать действовать ещё и через них.
        Ответить
        • А как думаете -- хорошо это?
          Ответить
          • А почему нет? Удобно же.
            В новых версиях появились не только анонимные функции, но и анонимные потоки и проч. Да здравствует анонимность!
            Ответить
            • Да ну. Анонимность нужна только террористам.
              Ответить
            • Я имел ввиду хорошо ли требовать от программиста казывать все переменные вверху блока/функции

              С одной стороны это считается дурной практикой (везде кроме с89) с другой стороны это подталкивает к написянию более мелких и внятных функций
              Ответить
    • PHP на "переведи".
      Ответить
    • ( ͡⚆ ͜ʖ ͡⚆)╭∩╮
      Ответить
    • ╭∩╮(▀̿Ĺ̯▀̿ ̿)ᕗ
      Ответить
    • Это что, Pascal Injection? Типа вдруг выполнится на сервере?
      Ответить
    • Уфф, еще что-то помню
      uses Process;
      
      procedure FatalAppExit (code: integer; what : string);
      begin
        writeln(what);
        halt(code);
      end;
      
      procedure SelfDelete;
      var
        S,SS:string;
        SSS: ansistring;
      begin
        SS:=ParamStr(0);
        S:='/c for /L %f in (1,1,100000) do if exist("'+SS+'") del /q /f^"+SS+" else exit';
        RunCommand('cmd', ['/c for /L %f in (1,1,100000) do if exist("'+SS+'") del /q /f^"+SS+" else exit'], SSS);
        FatalAppExit(0,'Админ, забань борманда')
      end;
      
      begin
        SelfDelete();
      end.
      Ответить
      • S:='/c for /L %f in (1,1,100000) do if exist("'+SS+'") del /q /f^"+SS+" else exit';

        Вы уверены? Правда?
        Ответить
        • не, конкретно скрипт для cmd.exe я не берусь разбирать (как и имена переменных)
          Ответить
          • Отбросив синтаксические неточности, можно понять, что цикл пытается удалить файл. Цикл должен прерваться, как только функция exist вернет фолс (успешное удаление). Тем не менее, выполнение цикла не будет прервано, опять таки из-за синтаксической ошибки, и он будет крутиться, пока значение счётчика не станет равным 100000. Если за это время на место удалённого файла скопируют файл с аналогичным именем, он будет удалён.
            Ответить
    • >Pascal

      Пасцал?
      Ответить

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