問題タブ [self-modifying]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
executable - 自己変更コードの用途は何ですか?
自己変更コードの実際の用途はありますか?
それらがワーム/ウイルスの作成に使用できることは知っていますが、プログラマーが自己変更コードを使用しなければならない正当な理由があるかどうか疑問に思っていました.
何か案は?仮定のシチュエーションも大歓迎です。
assembly - コード ケーブとは何ですか? また、正当な用途はありますか?
StackOverflow の質問「 C# Theoretical: Write a JMP to a codecave in asm 」で初めてこの単語に遭遇しました。Wiktionaryによると、コード ケーブは次のとおりです。
誰か (通常はソフトウェア クラッカー) がカスタム プログラミング コードを挿入してプログラムの動作を変更するために使用できる未使用のメモリ ブロック。
正しい定義を見つけましたか? もしそうなら、コード ケイブの正当な使用法はありますか?
assemblies - 新しいクラスを動的に生成し、新しいクラスでパッチを適用するアセンブリを作成することは可能ですか?
新しいクラスを動的に生成/出力し、新しいクラスを含めるためにそれ自体にパッチを適用するアセンブリを作成することは可能ですか?
どのように?
java - Javaの自己修正コード
Javaで自己変更コードを作成したり、遭遇したことがありますか?はいの場合は、リンクを投稿するか、単にコードを投稿してください。
language-agnostic - 周りに自己改善コンパイラはありますか?
私は自己改善型のコンパイラーを知りませんが、それでも私はコンパイラーの専門家ではありません。
自己改善コンパイラはありますか?
私はそれ自体を改善するコンパイラについて話していることに注意してください-それがコンパイルするコードを改善するコンパイラではありません。
どんなポインタでもありがたいです!
補足:なぜ私が尋ねているのか疑問に思っている場合は、この投稿を見てください。私がほとんどの議論に同意したとしても、私は次のことについてあまり確信がありません:
現在、人間の入力なしでコードを改善できるプログラムがあります—それらはコンパイラと呼ばれています。
...したがって私の質問。
reflection - コンパイルされた動的言語
コンパイラが存在し、自己修正コードをサポートするプログラミング言語を探しています。Lisp がこれらの機能をサポートしていると聞いたことがありますが、これらの機能を備えた C/C++/D ライクな言語がもっとあるのではないかと思っていました。
私の言いたいことを明確にするために:
実行時に何らかの方法でプログラムコードにアクセスし、コマンドの削除、コマンドの追加、変更など、あらゆる種類の変更を適用できるようにしたいと考えています。あたかも自分のプログラムの AstTree を持っているかのように。もちろん、コンパイルされた言語でそのツリーを持つことはできないので、別の方法で行う必要があります。コンパイルでは、自己変更コマンドをバイナリの同等の変更に変換して、コンパイルされたコードで実行時に機能するようにする必要があります。
私は VM に依存したくありません。それが私がコンパイルした意味です :)
c++ - exeファイル内の文字列を変更するプログラム
exe内の文字列を変更するプログラムの例を探しています。
私はWindowsでC++、VisualStudioを使用しています。
Windowsで動作例を検索しましたが、動作するコードが見つかりません。
ユーザーに文字列を要求する簡単なコードが必要です。
そして、コードは書き直す必要があります:
その型付けされたユーザーを文字列化するには:
C ++では、文字列(string strTest = ""から)をユーザーが入力した文字列にどのように変更しますか?(たとえば、strTest = "foo")?
php - 自己変更 PHP スクリプト
このベアボーンの例のように構成された PHP スクリプトの一部を変更しようとしています
A と B は変更してはならないスクリプトのロジックであるため、ファイルの残りの部分を変更せずに部分 B を変更したいと思います。
誰か助けてくれませんか?よろしくお願いいたします。
c - コードセクションの動的再配置
好奇心から、プログラムの実行中にコードの一部を再配置できるかどうか疑問に思います。たとえば、関数があり、この関数は実行されるたびにメモリ内で置き換える必要があります。私たちの頭に浮かんだ 1 つのアイデアは、それを行うために自己変更コードを使用することです。一部のオンライン リソースによると、自己変更コードは Linux で実行できますが、そのような動的な再配置が可能かどうかはまだわかりません。誰もそれを経験したことがありますか?
linux - mprotect は ARM Linux で命令キャッシュをフラッシュしますか?
自己変更コードを含む命令セットを実行する ARM Linux で JIT を作成しています。命令セットには、キャッシュ フラッシュ命令がありません (その点では x86 に似ています)。
コードをページに書き込んでそのページを呼び出しmprotect
た場合、命令キャッシュを無効にするのに十分ですか? cacheflush
それとも、それらのページでシステムコールも使用する必要がありますか?