Windows 2000 拡張カーネルの技術紹介 2018年6月10日 黒翼猫.

Slides:



Advertisements
Similar presentations
PowerPoint スライドの HTML 化支援ツール dcppt version 1 Yasuhiro Morikawa Copyright © 2005 GFD Dennou Club. All rights reserved. GFD Dennou Club.
Advertisements

1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Flash SWF ファイル書き換え PHP extension 2008 年 7 月 21 日 よや.
Rubyでニコニコをごにょごにょ MH35.
Windows PEファイル感染及び発見的手法による検知 Nicolas BRULEZ / Digital River
PHP AV(Audio Visual) 拡張 クライアントサイド PHP アプリケーションPHP
・ω・.
Developer Tools – Visual C /10~
互換性とパフォーマンス 川西 裕幸 DirectX Technical Evangelist
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
PHP AV(Audio Visual) 拡張 PHP asアプリケーション
OpenOffice.org のバグがなおるまで
技術トピックス 2014/10.
オペレーティングシステムⅡ 第11回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト.
WordPressの基礎.
F5 キーを押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
表紙 Windows用起動画面集        ~劇場版 v.1,00~ 作成:カズキング 場所:ブログ「俺らしいブログ」
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
情報工学基礎(改訂版) 岡崎裕之.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
バックドア(rootkit&rootshell) vs Tripwire
EGSに対応した粒子軌跡と 計算体系の3次元表示ソフト - CGVIEW -
第2章 ソフトウェアの基礎知識.
心理学情報処理法Ⅰ コンピュータにおけるデータ表現 マルチメディアとコンピュータ.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
IPマルチキャスト通信とXcast 早稲田大学後藤研究室 Xcast班.
中間発表 アリの王国更新 金華山の写真整理 柏崎 奈々 中間発表を始めます。
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
情報学部 プログラミング体験教室 (中級編)
情報学部 プログラミング体験教室 (初級編)
アスペクト指向プログラミングを用いたIDSオフロード
(Wed) Edited by KON IT講習会 一太郎編.
初めてのTSF 囚人.
型付きアセンブリ言語を用いた安全なカーネル拡張
卒業論文に向けて(5) 学部4年生 島本 大輔 2004年12月14日.
C言語を用いたシューティング ゲームの作成
HandleIOにふれる ヒント プログラムは別途配布しています。 Copyright, 2010 © Scarly Hardware.
3D散歩ゲーム 08A2043 谷口盛海 種田研究室.
分散IDSの実行環境の分離 による安全性の向上
澤見研究室 I04I021 片山祐輔 I05I095 山田大志 I06I040 野崎祥志
「OSで儲けない」 Microsoftの新戦略
Microsoftのマルチプラットフォーム戦略
実行時情報に基づく OSカーネルのコンフィグ最小化
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
0.2 プロジェクトの準備 DXライブラリを使うための準備.
全体ミーティング 6月6日 島本 大輔(M2) 2006年6月6日(火).
初めてのTSF 囚人.
第2章 ソフトウェアの基礎知識 電子制御設計製図Ⅰ    2010年5月19日 Ⅱ限目.
卒業論文に向けて(2) 学部4年生 島本 大輔 2004年10月29日.
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
プロジェクト演習Ⅱ インタラクティブゲーム制作
WindowsMobile de HelloWorld
WindowsMobile de HelloWorld
ソフトウェア保守のための コードクローン情報検索ツール
Java における 先進的リフレクション技術
Cell/B.E.のSPE Isolationモードを用いた監視システム
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
実装について 前田俊行.
Cell/B.E. のSPE上で動作する 安全なOS監視システム
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
JSPの基本 J2EE I (データベース論) 第8回 /
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
C言語を用いたゲームの作成 松井和幸.
卒業論文に向けて(3) 学部4年生 島本 大輔 2004年11月11日.
Javaを用いたシューティングゲーム作成
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
0.1 DXライブラリの導入 必要なファイルの準備.
Presentation transcript:

Windows 2000 拡張カーネルの技術紹介 2018年6月10日 黒翼猫

前身のKDWについて Known Dlls Wrapper の略 ちょクロシステムのlistexp2.exe を使ってKnownDllsのラッパーを作り、元のファイルを置き換えて、システムAPIを乗っ取る仕組みだった。 そのため、ウィルスに誤検出されたり、パフォーマンスが落ちる問題があった。

PEMaker 誕生 オリジナルのDLLを直接書き換えて拡張しようという思想。 まず、DLLファイルの仕組みを独自に解析(Windows 95バイブルなどにPEファイルのヘッダ形式などは書かれていたが万能ではなかった) まず、バイナリを書き換えるツールを作ろう!

PEMakerとは セクションテーブル・関数テーブル・再配置テーブルを追加したり・データディレクトリを編集したりできるバイナリ改造補助ツール

実際にDLLの書き換え① コードを微変更する場合は、隙間を探してJMPで飛ばして解決 少し足りない場合は各セクションテーブルの終わりに数百バイト~数K程度のすきまがあるのでそこにコードを埋め込む セクションテーブルの実アドレスが64K境界的に余裕がある場合は、セクションテーブルを移動させて数K~数十Kのコードを埋め込める それでも足りない場合は、新しいセクションテーブルを作ると数十K~数百Kのコードが埋め込める

実際にDLLの書き換え② 埋め込みたいコードをVC++ で書く バイナリエディタで埋め込む コールアドレスの埋め込み 埋め込んだコードの再配置テーブルを追加 エクスポートテーブルや関数テーブルを修正 バイナリエディタで微修正 チェックサムを書き込む

実際に非対応ソフトを動かす

苦労話 NTDLLやDriverを改造してチェックサムを書き換えなかった場合にBSoDになるのを知らなかった。 XPと関数名が同じなのに、引数が違うケースがあった。 カーネルモード呼び出しに無知だったためXPと同じ処理をしたらシステムクラッシュ。 非公開APIが思ったより多かった。 Windows 2000に実装されてるはずの機能がないケースが少なくない! OSによってロード推奨アドレスがあって、コードが大きくなりすぎて、固定アドレスが推奨されている関数が再配置されてクラッシュするケースがあった。

動かしたアプリ例 iTunes 11.x Chrome 54 Firefox 52 Media Player 11 WireShar 2.2.8 Skype 7 MPC Be CrystalDiskInfo 7.6 Nox Player 星界神話 ランス9 Office 2007 IME 2010 一太郎 2016

やってみて分かったこと XPで直ってるのにWindows 2000自体に未修正の不具合が沢山ある。 MSI.DLLやSHLWAPI.DLLはXPと2000で同じDLLを共用していて、内部でバージョンチェックして分岐処理をしている。しかも、扱っている構造体のサイズが違う Windows 2000に実装されてないはずの機能が実装されてることも少なくない。 Windows 2000でそのまま動くアプリが、バージョンチェックだけではじかれて、XPの新技術として紹介されているケースが沢山あった

その他の技術について Windows NT 5.xだけにある、OSバージョンを好きな数字に偽装する隠し機能の発見。 上位OSのアプリを動かそうとすると「有効な Win32 アプリケーションではありません」と言われる問題の回避。 Windows 2000でDirectX10のゲームを動かしてみる実験。

資料 ちょクロシステム http://www.chiyoclone.net/details.html 黒翼猫のコンピュータ日記 2nd Edition http://blog.livedoor.jp/blackwingcat/ windows2000 実験室 https://www7.atwiki.jp/win2000/