加如,现在给你一个参数,要求你写一个函数或者过程
如果参数是0,那么死机(kao...实现死机功能???)
如果参数非0,不死机。
关键是过程中间不准出现有对参数的判断语句。
呵呵。看看怎么办?

解决方案 »

  1.   


    procedure SiJi(x :integer)
    var 
      n:integer
    begin
      n:=1;
      while n+x<>n do
      begin
         n:=n;
      end
    end;
      

  2.   

    只是程序死而已,要想系统死自己写
    下面try算不算对参数的判断?
    procedure dd(I: Integer);
    begin
        try
          dd := 1 div i;
          exit ;
        except
        end ;
        repeat until 0=9;
    end;
      

  3.   

    procedure die(i:integer);
      begin
        asm
          @Start:
          mov eax,i
          test eax,eax
          jz @Start
        end;
      end;
      

  4.   

    :)procedure die(i:integer);
    begin
      while 1 = 1 do
    end;
      

  5.   

    procedure SiJi(x :integer)
    var 
      n:integer
    begin
      n:=1;
      while n+x<>n do
      begin
         button:=Tbutton.create(self);
         button.parent=self; 
      end
    end;这样会不会死机?
      

  6.   

    if os_Version in [win95, win97, win98, winMe] then 
      太简单了,让他重启也行
    else if os_Version in [nt4, win2000, winxp] then 
      难!
    else 
      不可确定;除非你可以写出运行在0环的程序。
      

  7.   

    在NT中实现重启获得Ring0层权限不像想象中那么难!但这又有什么关系呢?造成死机的方法当然很多,谁又能否认死循环不是死机?把参数应用到运算中去,其结果影响程序的执行方式~~~这是一种思路,不过上面的哪些符合要求有待探讨~~~procedure Die(i:integer);
    asm
      @Start:
      test eax,eax
      jz @Start
    end;这样写简单点~~~由于指令的执行改变了标志位寄存的值,其实判断语句编译后的原型就是这类语句,但这并没对参数数据本身进行的判断~~~应该是符合要求的!
      

  8.   

    98,NT要死机还可以,写个最高优先级的线程执行死循环就可以了。(好像NT后来修正了这个问题,把系统管理窗口的优先级设为最高,这样就不行了)
    2000以上想死机麻烦一点。
    如果过程中间不准出现有对参数的判断语句,麻烦了,非0不死机......
    思考ing
      

  9.   

    不死?才怪!
    procedure die(i:integer)
    var
    l:longint;
    begin
    for l:=1 to abs(100*i) do 
    winexec(pchar(application.exename));
    end;
      

  10.   

    -->winexec(pchar(application.exename),sw_hide);