Windows NT 5.x 系で動かすとどうしてもクラッシュしてしまうプログラム その3

Windows NT 5.x 系で動かすとどうしてもクラッシュしてしまうプログラムについて

Windows NT 5.x 系で動かすとどうしてもクラッシュしてしまうプログラム その2

前回は、 jvm.dll を改造して無理やり動かしていたので、オリジナルの jvm.dll で動くのを目標に改造

1. kernel32.dll のDLL_THREAD_ATTACH をフックして、TlsAlloc を呼び出して、 DLL_THREAD_DETACH で解放するようにしてみた → アプリ自体もエラー、サービスがしばらくするとクラッシュ
2. kernel32.dll のDLL_THREAD_ATTACH をフックして、TlsAlloc を呼び出した後何もしない→ アプリ自体もエラー、サービスがしばらくするとクラッシュ
3. kernel32.dll のDLL_PROCESS_ATTACH をフックして、TlsAlloc を呼び出した後何もしない→ アプリ自体もエラー、サービスがしばらくするとクラッシュ
4. kernel32.dll のDLL_PROCESS_ATTACH をフックして、TEB テーブルだけ書き換え→OK

・ω・ こんな 感じ

せっかくなので Windows 2000 で Java のプログラムをコンパイルして動かしてみる。
GUI 使わなければ問題ないだろう

public class Pai {
    public static void main( String[] args ) {
           double  k,l,h,hw,lw,w;
            int     i;
            k= 6;
            l= 1;
            for(i=0; i<26; i++)
            {   
                w= l/2;
                lw= w*w;
                h= Math.sqrt(1-lw);
                hw= 1-h;
                l= Math.sqrt(hw*hw+lw);
                k= k+k;
            }
            System.out.println("円周率 = " + l*k/2);
            System.out.printf("Hello Java 9 on windows 2000.");
    }
}

java9
よし、大丈夫だ、問題ない・ω・

ちなみに、DirectX 使わないGUIアプリ作ってみた所、GUIが描画できなくて単一のWindow になってしまうことが判明。
描画周り全部 Windows NT 6.x の機能使ってる模様

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です