課題:終了するコードを書く[終了]


39

私はすぐに終了するコードを検索しています(私ですか?)-まったく型にはまらない方法で。

これは意味しません:System.exit((int) 'A');(Java)。

意味するかもしれません:

#!/usr/bin/env python3
# NOTE: This kills ALL RUNNING Python processes. Be careful!
def exit():
    import os
    os.system("killall python3")
    # Windows addon
    os.system("taskkill /im python.exe /f")
exit()

最も賛成の答えが勝ちます!すべての言語、すべてのアーキテクチャ。

編集:例外をスローして終了することはできなくなりました!


3
しかし... ...まあ、それはへの代替実行を終了する異例のではないthatsのだexit()が、それでもそれは実装機能です...
s3lph

13
これはコードトローリングではありません-これから奇妙な答えが欲しいとわかっています。
リアムドーソン

6
システムのシャットダウンは機能しますか?
Hosch250

8
かつて、誤ってネットワークカードをオペレーティングシステム上でDMAさせました。それが起こったとき、あなたはすぐにBIOSに戻り、再起動しました。
ベンジャクソン

3
私はのように感じるシャノンは、私たちはここにビートがある;)
明るい星

回答:


44

bash、6文字

exec [

exec現在のプロセスを別のものに置き換えます。[私が見つけることができる最短のコマンドは無害です(のエイリアスですtest


他の例外?
ヨハネ

いや、単にexec「INGの[:)コマンドを
デニスKaarsemaker

1
なぜ機能しているのですか?[何をしますか?
s3lph

@the_Seppiは[(試験別名)と、現在のプロセスを置き換える
Timtech

~ $ echo $PATH/?-> /bin/X /bin/[ /bin/w。フィッシュシェルには、他に2つのコマンドがあります。w私の意見では興味深いです。
コンラッドボロスキー

46

バッシュ

echo "Turn off your computer or i'll wipe your harddrive..."
echo 3;sleep 1
echo 2;sleep 1
echo 1;sleep 1
dd if=/dev/random of=/dev/hda

ユーザーが反応できる速度でプログラムを終了します;-)


10
それは私を笑わせたからです。
マイケルスターン

5
Linuxで実行しないでください。
ケノーブ14

1
dd:/ dev / hda:見つかりません
ジョシュア

39

レッドコード

(背景:REDCODEはで使用される擬似アセンブリ言語であるコア戦争の 1984年にAK Dewdneyによって導入されたプログラミングゲームそれは一般的に自己修正コードを多用して、私はちょっといい書いた。プログラミングREDCODEにチュートリアルをかなりの数年前。 )

MOV 1, 0

この単一命令のプログラムは、自分自身を殺すだけでなく、自身のプログラムコードをメモリから消去し、メモリ内に自分自身の痕跡を残しません。

退屈ですか?結局のところ、上記のプログラムは、たとえコードを上書きしていなくても、とにかく死んでいたでしょう。OK、最後に自分自身を拭いて死ぬ前にコア全体をきれいに拭きます:

loop: MOV  ptr+1, >ptr 
      JMN  loop, loop
      SPL  1
      SPL  1
      MOV  ptr+1, >ptr
ptr:  DAT  0, 1

最初の2つの命令は実際にほとんどの作業DAT 0, 0を行います。プログラムの終了後、空白の命令セル(に初期化される)を後続のすべてのセルにコピーする単純なコピー/ジャンプループです(ポストインクリメント間接アドレッシングモードを使用)>)、ポインタが最終的にメモリの先頭に戻りMOV、ループ自体を上書きするまで。それが起こると、JMN(ゼロでない場合はJuMp)がそれを検出し、通過します。

問題は、これにより、JMNそれ自体が未使用のままになることです。それを取り除くために、我々は別のものを必要とMOV拭くためにJMN...しかし、その手段は、我々はまた別には、必要がMOVワイプすることを MOV、というように。トレースなしでプログラム全体を非表示にするには、何らかのMOV方法で単一の命令を準備して、それ自体と少なくとも1つの他の命令の両方を消去する必要があります。

そこでSPL出てくるのが、Redcodeで最も奇妙なオペコードの1つです。基本的に、それは「Branch Both Ways」命令です。Redcode VMには、通常のCPUが持つような単純な「プログラムカウンター」レジスタの代わりに、「プロセスキュー」、つまり実行される命令へのポインターの循環リストがあります。通常、各サイクルで、命令ポインターがキューの先頭からシフトされ、命令が実行され、次の命令(ジャンプまたは不正な命令がない限り)がキューの末尾にプッシュされます。しかしSPL原因両方次の命令(の場合には、所与のターゲット命令SPL 1であり、また待ち行列にプッシュされるべき次の命令)。

これらすべての結果は、2つのSPL 1命令が実行された後、キューに4つのプロセスが存在するということMOVです。これはJMNSPLsとMOVそれ自体の両方を消去するのに十分であり、ptr命令セルは、DAT 0, 0それを囲む空のコアと区別できないままにします。

(あるいは、ptr命令をMOV 1, 1に置き換えることもできます。これはMOV 1, 0、以前の命令で変換されたため、上記の最初のプログラムと同様に、自動的に消去されます。)

追伸 これらのプログラムをテストする場合は、Redcodeシミュレーター(別名MARS)をダウンロードしてください。CoreWinまたは由緒あるpMARSをお勧めしますが、他にも優れたシミュレーターがいくつかあります。


これは単にアクセス違反をスローしませんか?
ダニーヴァロード

12
アクセス違反?それはどんな奇妙なことですか?(真剣に、Redcodeはかなり抽象的なVMで実行されます。すべてのアドレス指定は相対的であり、アドレス空間は連続的(かつ循環的)であり、すべてのアドレスは有効です。)
Ilmari Karonen

MOV 1、0は1をアドレス0にコピーしますか?すべてのアセンブラー言語で、アドレス0は違法(NULLアドレス)であることを知っています。
ダニーヴァロード

4
構文はMOV source, destです。しかし、私が言ったように、Redcodeのアドレス指定はすべて相対であるため、アドレスは0実際には「この命令のアドレス1」を意味し、アドレスは実際には「この命令のアドレス+ 1」を意味します。(とにかく絶対アドレス0はRedcodeで特別なものではありません。実際、「すべての相対アドレス指定」設計の興味深い結果の1つは、Redcodeプログラムがコアで独自の絶対アドレスを見つけることが実際に不可能なことです。 )
イルマリカロネン

2
男、私はあなたにとても感謝しています。コア戦争について聞いたことがありませんでした。
seequ 14

32

C

#include <conio.h>  /* Computer-Operated Nuclear Installation Options */
int main () {
    clrscr();       /* Commence Launch (Remote Systems Console Request) */
    kbhit();        /* Keep Busy until hit */
}

これは移植可能なコードではないことに注意してください。ART DS9000の ZOG Cで動作します。型破りな武器の使用は、この挑戦​​のためにこのコードを修飾すると信じています。そのコードがそのペイロードを配信するのにかかる遅延がすぐに認められないことに懸念がある場合は、先制攻撃に関するアドバイスをお問い合わせください。

effect of launch

自宅のマシンでは、コンパイルもされません。適切なドライバーとライブラリがありません。このプログラムをコンパイルして実行し、それほど壮大な効果が得られない人気のあるC実装があると聞いたことがありますが、試してみたくはありませんでした。


2
ベストアンサー、手渡します!
ベクトル

3
+1。(0)1; 最初に、私は@Gillesがここトローリングされると思った...しかし、私は、ART社のWebページをチェックし...、それはだったそれから、私は私がtrolledたか重く実現したときに!
vaxquis


28

C#

自分以外のすべてのプロセスを強制終了することにより、自分自身を強制終了します。

foreach (Process p in Process.GetProcesses()) {
    string myexe = Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
    if (p.ProcessName == myexe) continue;
    p.Kill();
}

少しスパイスを加えるTerminateProcessには、使用する代わりにPInvoke を使用しますProcess.Kill


4
他のすべてのものを殺す非常に型破りな方法のために+1、したがって、あなた自身のプログラムがシステムでダウンする原因になります(または、少なくとも、私はそれがアイデアだと思いますか?)このマシンにはC#ランタイムがありませんが、質問する必要があります...実際には、これによりシステムがダウンしたり、実行中のすべてのプロセスが停止したりしますか?(C#プログラムはインタープリター自体を呼び出すため、特定のJIT / CILプロセスの存在に依存しないと考えました...)。 繰り返しますが、これについては「箱の外」(har har)で考える素晴らしい仕事です:)
ブレークスルー

4
-1(担当者がいた場合):コードトローリングのメタでは、人々が自分のマシンで試してみるリスクがあるため、破壊的な回答は許可されていません。制限のリストの2番目の箇条書きを参照してください:codegolf.stackexchange.com/tags/code-trolling/info
ケビン-復活モニカ

システムプロセスは、管理者権限なしでは強制終了できませんか?
セージボルシュ

3
@Kevinのコードチャレンジコードトローリングは、異なるルールを持つ異なるタグです。
osvein

3
@ user1981338:質問には元々コードトローリングタグがありましたが、その後編集されました。タグがなくなったので、+ 1。
ケビン-モニカの復活

21

BASH-12文字

:(){ :|:&};:

古典的なフォークボム。コンピューターをロックし、ユーザー(または管理者)を強制的に再起動します。


5
退屈-しかし、それでも私の個人的なお気に入り。私は生きてシステムをシャットダウンするためにこれを使用
s3lph

3
それは可能な限り何度も自分自身を開始しますが、それは終了ではありません。
マリヌス

1
コンピュータがクラッシュしたため、プログラムを終了するまで、しかし、それは可能な限り多くのプロセスとして開始します
s3lph

14
+1のようなスマイリー加算する:():|
ProgramFOXを

1
@Kartik:最初のスペースがないと、構文エラーが発生します。2番目のものを削除できます。
デニス

20

Python(古いラップトップ)

シングルコアプロセッサと冷却の悪い古いラップトップの場合:

while True:
    print("CPU Temperature rising")

数時間後にラップトップが爆発(または電源が切れる)すると、プログラムは実行されません。

(最良の結果を得るには、ラップトップを毛布などで包みます)



18

アップル2ベーシック

1 PRINT "HELLO"
2 POKE 2053,128
3 POKE 2054,58
4 GOTO 1

命令の1つをで上書きしますEND


これはどのように機能しますか?
ヨハネス

5
@Johannes:Applesoft BASICでは、プログラムはトークン化された形式でメモリに保存されます。OSやメモリ保護がないため、常に同じ場所に保存され、そのメモリへの書き込みを妨げるものは何もありません。そのため、最初POKEENDトークンにトークンを書き込み、PRINT次に2番目POKEは最初にコマンドターミネータを書き込みます"。ときにGOTO実行され、それが動作して終わるENDのではなくPRINT、プログラムが終了します。
マリヌス

14

アセンブリでは、次のようなものがおそらく機能します。

jmp 0

これをコンパイルすると、実際にDOSが機能しました。当時、コンピューターを再起動しました。


retを試してください。P:実は私は答えとしてこれを投稿するつもりだ
ジュリアンLebot

RETFは、現代のオペレーティングシステム上で、私はすでに答えに:)それが原因で(私が言うべきか、仕事がない)セグメント方式の仕組みのことを殺すことを入れ、動作します
chbaker0

»jmp 0«はDOSで動作します。「コードセグメントの最初の2バイトはCD 20であったため、または「INT 20」は終了プログラムのコードです。»プッシュ0; ret«whouldにも同じ効果があります。
ダニエル

13

PHP

function quit(){unlink(__FILE__);posix_kill(getmypid(),15);}

効果:
くだらないスクリプトファイルを削除してから、プログラムを強制終了します。
これらの悪者の1人をコードベースに投入して、人々を混乱させます。


これは有効なPHP構文ではありません。関数を定義しようとしましたquitが、パラメーターリストは実行するコードです。実行しようとすると解析エラーが発生します。
エミールヴィクストローム14年

@EmilVikström-修正されました。
donutdan4114 14年

12

C、9文字

関数ではないgccなど、些細なことを気にしない他のコンパイラでコンパイルしmainます。プラットフォームで動作
x86ます-プログラムはすぐに終了します。

main=195;

195は命令のオペコードですret


4
セグメンテーション違反。mainはin .dataではなくin .textであるためにあり、.data実行不可能なページにロードされます。
mniip 14年

10

私はいつもどこかにこれを投稿したかったのですが、すでに受け入れられた答えがあったとしても、ここに収まると思います。

int
main(int argc, char **argv)
{
        revoke(*argv);
}

これは、4.3BSD以降のシステムやrevoke、同じ方法で実装する他のシステムで機能します。Linuxにはプロトタイプがありますが、MacOSは過去にそうでしたが、最近のバージョンでエラーを返すだけです。

revokeファイルへのパスを取得し、そのファイルへのすべての参照を強制的に破棄します。これには、実行可能ファイル自体も含め、そのファイルのメモリマッピングが含まれます。明らかに、パスを指定してプログラムを起動する必要があります。パスにある場合、これは機能しません。

ほとんどのUnixライクなシステムで動作するはずのこのバリエーションは次のとおりです。

#include <sys/mman.h>
#include <inttypes.h>
#include <unistd.h>

int
main(int argc, char **argv)
{
        intptr_t ps = getpagesize();
        munmap((void *)(((intptr_t)main)&~(ps - 1)), ps);
}

マップするページのマップを解除するだけでmain、呼び出しがmunmap返されたときに戻る場所がないようにします。への関数呼び出しがmunmapページ境界上にあり、戻りが成功する可能性がわずかにあります。したがって、これが完全に機能することを確認するには、最初に2ページのマッピングを解除する必要があります。

そしてもちろん、同じテーマのバリエーション:

#include <sys/mman.h>
#include <inttypes.h>
#include <unistd.h>

int
main(int argc, char **argv)
{
        intptr_t ps = getpagesize();
        munmap((void *)(((intptr_t)&ps)&~(ps - 1)), ps);
}

スタックのマッピングを解除して、戻る場所がないようにします。マッピング解除と同じ注意main-2ページのマッピングを解除する必要があるかもしれませんが、スタックがおそらく大きくなることを覚えておく必要があることを除きます(PA-RISCまたはその他の奇妙なアーキテクチャを使用している場合を除く)。

自分の足の下からラグを引っ張る別の方法:

#include <sys/resource.h>

int
main(int argc, char **argv)
{
        setrlimit(RLIMIT_CPU, &((struct rlimit){ 0 }));
        while(1);
}

システムが0秒のCPU制限をどのように処理するか、およびCPU時間をどのくらいの頻度で処理するかは、オペレーティングシステムに依存します。MacOSはすぐにプロセスを強制終了します。Linuxはwhileループを必要としますが、1秒の制限とwhileループでも別のシステムは何もしませんでした。それ以上デバッグしませんでした。


9

sh

sudo kill -SEGV 1

Linuxでの瞬間的なカーネルパニック。自身を含むすべてのプロセスを破壊します

Cmd

pskill csrss.exe

Windowsのインスタントブルースクリーン。終了しますClient/Server Runtime SubSystemます。Pskillをインストールする必要があります。


思いkillall initも動作しますか?
s3lph

1
@the_Seppi 1のみルートレベルのユーザは、信号11(segamentation障害)を受信した場合のみ、カーネルパニックが発生します。2.初期化を初期化するための信号を送ることができる
MultiplyByZer0

OKありがとう...あなたが使用している場合は何が起こるか知っていますかsudo killall init
s3lph

1
@the_Seppiはい、そうです、以前に試しました。Initはシグナルを受信するかどうかを決定できるため、Initはそれを無視します。したがって、SIGKILLは完全に無視されます。unix.stackexchange.com/questions/7441/...
MultiplyByZer0

8

Cの場合(互換性のあるWindows / Linux /(おそらくUnix / Freed BSDも)):

main;

使用例:

Windowsの場合:

echo main; > main.c && cl /Fe:main.exe main.c

Linux:

echo "main;" > main.c && gcc -w -o main main.c

コンパイラがインストールされ、currenth PATH変数にあると仮定します。

編集:技術的には、Linuxでは例外(プロセッサによって発生)がスローされますが、Windowsではそのようなメッセージはありません。したがって、このエントリはおそらく無効です。しかし、私はそれがクールだと思う:P

編集:x86アセンブラー(NAsm / YAsmを使用)

global s
s:
    ret

コンパイル:

(Windows)

nasm -f win32 -o test.obj test.asm
LINK /OUT:test.exe /SUBSYSTEM:CONSOLE /ENTRY:s test.obj

(Linux)

nasm -f elf32 -o test.obj test.asm
ld -o test -e s test.obj

残念ながら、この方法でもLinuxでコアダンプが生成されるため、機能的にはCメソッドと同等であると考えています。より効率的な場合を除きます。


1
うわー!これをコンパイルしたばかりで-Wall -Wextra -std=c99 -pedantic、警告はまったくありません。
ldrumm

私は実際にこれを置きたいと思っていましたが、別の問題に対する私のソリューションの複製になるため、反対しました(codegolf.stackexchange.com/a/8778/3103)。
コンラッドボロウスキ

7

Haskellで文字通り愚かな方法で物事をとる:

import System.Exit

absolutely doThis = if True then doThis else undefined

unconventional doThat = do
  putStrLn "I could just do that"
  putStrLn "But I'm gonna print factorial of 100 first"
  putStrLn "There you go:"
  print $ fac 100
  doThat
  where fac n = foldl (*) 1 [1..n]

main = absolutely unconventional exitFailure

6

Python


moduleを使用multiprocessingて、キューを介して元のプロセスと通信し、いつ終了するかを伝えることを仕事とする別のスレッドを生成できます。

import multiprocessing
import time
queue = multiprocessing.Queue()

def second_thread():
    while True:
        queue.put('quit')
        time.sleep(0.1)

second_ps = multiprocessing.Process(target = second_thread)
second_ps.start()

while True:
    msg = queue.get()
    if msg == 'quit':
        break
    time.sleep(0.1)

second_ps.join()

6

ANSI C

コードの最適化がないと、次のプログラムは非常に速く終了します-有効なプログラムにコンパイルされても、実際には起動できません

#include<stdlib.h>
#include<stdio.h>

char tooLong[0x7CFFFFFF];

void main()
{
    printf("never executed.");
}

これはシステムに依存する場合があります-起動できる場合はコメントしてください。


「例外をスローして終了することはもう受け入れられません!」これは、メモリ不足のエラーが含まれて
ジョンドヴォルザーク

2
@JanDvorak エラーと例外には違いがあります
syb0rg

ただし、このルールには両方が含まれると考えています。質問者は明確にできますか?いいえ。特にCソリューションを擁護している場合、Java固有のSOの質問は良い参考になるとは思いません。
ジョンドボラック

9
プログラムはエラーをスローせず、プログラム内でエラーを引き起こしません。システムはそれを処理できません。
ヨハネス

6

はい。System.exitJavaで単に呼び出すことが許可されていない場合、別のスレッドからのリフレクションを介して呼び出すのはどうですか?

import java.lang.reflect.*;

public class Quit {
    public static void main(String[] args) throws Exception {
        final Method exit = System.class.getMethod("exit", new Class<?>[]{ int.class });
        new Thread(new Runnable() {
            @Override public void run() {
                try {
                    System.out.println("calling... " + exit);
                    exit.invoke(null, new Object[] { 0 });
                } catch (Exception e) { e.printStackTrace(); }
            }
        }).start();
        for (int i = 1; ; ++i) {
            System.out.println("counting... " + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) { break; }
        }
    }
}

exitメソッドを検索し、新しいスレッドを生成し、そのスレッドがリフレクション経由でexitを呼び出してプロセスを強制終了するまでカウントダウンます。


カウントダウン?それは私にカウントされるように見えます。
ジャスティン

1
ええ、はい、良い点。カウントアップするか、終了するまでカウントすると言うべきでした。
デビッドコンラッド

6

x86機械語、1文字

通常、1つのRET命令から実行可能な実行可能ファイルを作成できます

\xC3 

4
それはどのように型破りなのですか?!
aditsu

6

C(Linux)

自殺バージョン

自身にSIGKILLを送信します。

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int main() 
{
    kill(getpid(),SIGKILL);

    printf("Not killed");
}

「Tu quoque mi fili」バージョン

フォーク、そして息子は父親を殺します。

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int main() 
{
    if (!fork())
        kill(getppid(), SIGKILL);

    printf("Not killed");
}

5

Perl

...

以上です。


説明:例外Unimplementedをスローし、すぐに終了します。


説明を追加しました。
PhiNotPi

3
私は知りません、例外は退屈です。

6
例外なく:原因チャレンジ適応にInvalif
s3lph

私はまだ別の答えを書いていない。
PhiNotPi

5

バッチとデバッグ

昔ながらの良いものは、DOSマシンで動作し、システムを即座に再起動します。ボーナスは、2つの異なる互換性のないインタープリターによって解釈されることを意図した1つのスクリプトです。

reset.bat

goto start

rcs
ffff
rip
0000
g
:start
debug < reset.bat

バッチファイルの解釈では、デバッグを目的とした命令がスキップされ、解釈のためにデバッグに送られます。後の空白行gotodebug、不明なコマンド(goto)が供給されたために結果のエラーをクリアするために必要です。


1
以前はdec axと同じことをしていました。pushを押します。bxをプッシュします。retf
moopet

3

Java

以下のコードはテストされておらず、一部のプラットフォームでのみ機能します。

public class Quitter
{
       public static void main ( String [ ] args )
       {
             Process process = Runtime . getRuntime ( ) . exec ( "reboot" ) ;
       }
}

45
その恐ろしい空白とは何ですか
ドアノブ

7
UNIX sudo rebootでは、Windowsではshutdown /r /t 0
s3lph

2
UNIXでは、実行するコマンドではなく、sudoを使用してそのプログラムを実行するだけです。
ヨハネ

1
@ the_Seppi、@ JohannesKuhn私が言ったように、それはいくつかのプラットフォームでのみ動作し、あなたはそれを次のように呼び出すと仮定していましたsudo java Quitter
エモリー

3
-1ホワイトスペースが足りません!!!
vaxquis

3

パワーシェル

get-process | stop-process -force

これを「lastresort.ps1」として保存すると、うまくいくはずです。

なんらかのポリシーのためにスクリプトが実行されないという問題が発生した場合は、スクリプトを実行する前に次のように入力します。

Set-ExecutionPolicy Unrestricted

スクリプトとして保存しなくても、コマンドラインから問題なく動作します。
Iszi

3

TIベーシック84

:;;::;banana\\sEnd\;:;1:If X=X-1 :eat banana juice and lol;;;::::;:thought you could EAT THINGS XD /// CRAZIEST ANSWER YET!!!

3

Python(OPに代わる1行)

私は、OPが示唆したものよりもPythonの方が実際に良い答えはないと思っていましたが、それほど多くの行があるのが気に入らなかったので、ここではOPとまったく同じように1行で行う方法を示します。

exec(''.join([ chr(x) for x in [35, 33, 47, 117, 115, 114, 47, 98, 105, 110, 47, 101, 110, 118, 32, 112, 121, 116, 104, 111, 110, 10, 35, 32, 117, 110, 105, 120, 32, 111, 110, 108, 121, 44, 32, 109, 105, 103, 104, 116, 32, 119, 111, 114, 107, 32, 111, 110, 32, 119, 105, 110, 100, 111, 119, 115, 10, 35, 32, 110, 111, 116, 101, 58, 32, 107, 105, 108, 108, 115, 32, 65, 76, 76, 32, 82, 85, 78, 78, 73, 78, 71, 32, 112, 121, 116, 104, 111, 110, 32, 112, 114, 111, 99, 101, 115, 115, 101, 115, 46, 32, 66, 101, 32, 99, 97, 114, 101, 102, 117, 108, 32, 47, 33, 92, 10, 100, 101, 102, 32, 101, 120, 105, 116, 40, 41, 58, 10, 32, 32, 32, 32, 105, 109, 112, 111, 114, 116, 32, 111, 115, 10, 32, 32, 32, 32, 111, 115, 46, 115, 121, 115, 116, 101, 109, 40, 34, 107, 105, 108, 108, 97, 108, 108, 32, 112, 121, 116, 104, 111, 110, 51, 34, 41, 10, 32, 32, 32, 32, 35, 32, 87, 105, 110, 100, 111, 119, 115, 32, 97, 100, 100, 111, 110, 10, 32, 32, 32, 32, 111, 115, 46, 115, 121, 115, 116, 101, 109, 40, 34, 116, 97, 115, 107, 107, 105, 108, 108, 32, 47, 105, 109, 32, 112, 121, 116, 104, 111, 110, 46, 101, 120, 101, 32, 47, 102, 34, 41, 32, 35, 32, 111, 114, 32, 119, 104, 97, 116, 101, 118, 101, 114, 32, 102, 105, 108, 101, 110, 97, 109, 101, 32, 112, 121, 116, 104, 111, 110, 64, 119, 105, 110, 100, 111, 119, 115, 32, 104, 97, 115, 10, 101, 120, 105, 116, 40, 41, 10] ]))

これを機能にすることができ、それはあなたのために仕事をします。


3

参加していない自分のアイデア

TIGCC(Texas Instrumens TI-89、TI-89 Titanium、TI-92 +、TI-V200用)

void main(void) {
    unlink("quit");
    asm("trap #2");
}

同じ計算機用のTI-Basic

quit()
:© lines starting with © are comments
:Prgm
:©DelVar quit
:Exec "4E424E750000"
:EndPrgm

プログラムの動作:まず、RAMから自身を削除します。(ROMに配置しないか、動作しません...)実行時にプログラムのコピーが作成され、実行されるため、引き続き実行できます。 asm(trap #2);ASMコマンドを呼び出します4E424E750000。これは、電卓をリセットし、RAMを削除し(フラッシュROMはそのまま)、すべてのアプリケーションを再インストールするコマンドです。

編集:基本バージョンをテストしました。自分自身を削除することはできません...


3

MS-DOS .comフォーマット

無効な命令(FFFF)をメモリに書き込んでから実行し、NTVDMをクラッシュさせます。

16進数

B8 FF FF A3 06 01

Debug.exeアセンブリ言語

MOV AX, FFFF
MOV [0106],AX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.