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."); } } |
ちなみに、DirectX 使わないGUIアプリ作ってみた所、GUIが描画できなくて単一のWindow になってしまうことが判明。
描画周り全部 Windows NT 6.x の機能使ってる模様
Comments