2014年10月26日

Win2000でXPのネットワークドライバを改造して動かない理由が判明

Windows XP用のドライバを改造してもどうやっても Windows 2000で動作しなくて悩んでいたのですが、原因が分かりました ・ω・

まず、XP用のドライバ
          push    0000007Ch <- NDIS50_MINIPORT_CHARACTERISTICSのサイズ
          lea    eax,[ebp-7Ch]
          push    eax
          push    [ebp+0Ch]
          mov    byte ptr [ebp-7Ch],05h
          mov    byte ptr [ebp-7Bh],01h  <- NDIS Version 5.1を指定
          mov    dword ptr [ebp-1Ch],L0001A628
          mov    dword ptr [ebp-18h],L0001C9FC
          mov    dword ptr [ebp-14h],L0001347A
          mov    dword ptr [ebp-74h],L0001919C
          mov    dword ptr [ebp-68h],L000134AE
          mov    dword ptr [ebp-64h],L00018E46
          mov    dword ptr [ebp-60h],L000137B4
          mov    dword ptr [ebp-5Ch],L00018D54
          mov    dword ptr [ebp-58h],L0001BAF8
          mov    dword ptr [ebp-50h],L00013B08
          mov    dword ptr [ebp-40h],SUB_L00019506
          mov    dword ptr [ebp-48h],L0001B2D0
          mov    dword ptr [ebp-3Ch],L0001AD7A
          call    [NDIS.SYS!NdisMRegisterMiniport]

さて、ここで、NDIS.SYSの中身を見てみましょう
 NdisMRegisterMiniport:
          push    ebp
          mov    ebp,esp
          lea    eax,[ebp+10h]
          push    eax
          push    [ebp+10h]
          push    [ebp+0Ch]
          push    [ebp+08h]
          call    SUB_L00022C10
          pop    ebp
          retn    000Ch

 SUB_L00022C10:
          push    ebp
          mov    ebp,esp
          push    ecx
          push    ebx
          push    esi
          push    edi
          mov    ecx,L00013B50
          call    SUB_L00011858
          mov    ebx,[ebp+08h]
          test    ebx,ebx
          jz     L00022DBF
          mov    esi,[ebp+0Ch]
          xor    ecx,ecx
          cmp    [esi+01h],cl <- NDIS Version 下位が 0以外の場合C0010004
          jnz    L00022C4F
          mov    al,[esi]
          cmp    al,03h
          jnz    L00022C40
          push    0000003Ch
          jmp    L00022C4E
 L00022C40:
          cmp    al,04h
          jnz    L00022C48
          push    00000048h
          jmp    L00022C4E
 L00022C48:
          cmp    al,05h   <- NDIS Version 上位が 5より大きい場合C0010004
          jnz    L00022C4F
          push    00000060h <- NDIS 5.0向けの構造体サイズ
 L00022C4E:
          pop    ecx
 L00022C4F:
          test    cx,cx
          jz     L00022DC6
          movzx    eax,cx
          cmp    [ebp+10h],eax <- 構造体サイズの確認
          mov    [ebp+08h],eax
          jc     L00022DCD       <- 対応してるバージョンの構造サイズよりでかい分には構わないらしい
          cmp    byte ptr [esi],05h
          jnz    L00022C7C
          cmp    dword ptr [esi+58h],00000000h
          jz     L00022C7C
          cmp    dword ptr [esi+5Ch],00000000h
          jz     L00022DCD
               :
 L00022DC6:
          mov    edi,C0010004h
          jmp    L00022DD9

というわけで、 NdisMRegisterMiniport を呼ぶときに Version 5.0を指定すれば動作する可能性が出てきました|・ω・) ドキドキ

以前作った Atheros ドライバを修正してみたのがこちら

l1c50x86v3.cab
2015/1/25更新


blackwingcat at 12:30│Comments(6)TrackBack(0) | このエントリーをはてなブックマークに追加 mixiチェック |
このエントリーをはてなブックマークに追加
Windows2000 | 技術

Twitter Feedback

トラックバックURL

この記事へのコメント

1. Posted by ゐふゆさ   2014年10月28日 21:12
5 うれしいです!
毎日おつかれさまです。
2. Posted by Izumi   2014年11月01日 16:46
>> Atheros ドライバを修正
黒翼猫さん、ありがとうございます。m(__)m
私のマザーはAtherosのLANチップ
(8151)ですが、IntelPRO1000を挿しています。
貴ドライバ試しましたが私の環境
(ギガバイト社:G-41M/COMBOマザー)
では何故か動きませんでした。
3. Posted by AR8151   2015年01月20日 17:36
上の方と同じマザーですが、試した結果を報告しておきます。
Atheros:AR8151 −> 動きません。

内容:
1.ドライバ(l1c50x86.sys)のチェックサムが不正になってるんで、
  ロードの段階ではじかれるてる模様・・・
2.チェックサムを修正 −> LANのLED点灯
  おっ! と思ったが、残念ながら動かず。
  デバイスマネージャで見ると、黄色!がついています。
  惜しいところまで行ってるのかも?
4. Posted by AR8151   2015年01月24日 11:47
弄くって動くようになったんで報告しておきます

NdisWriteConfigurationで
NDIS_PARAMETER_TYPE::NdisParameterHexInteger
を使ってる処があって、そこでアウト。
どうもWin2kのNDIS.sysはこのタイプの値には未対応の模様。

WinDbgで詳細に追ってみると、
アウトしてる箇所は、無くても問題なさそうな処だったんで該当箇所をパス

したら、上手く動きました。
5. Posted by 黒翼猫   2015年01月24日 12:33
おお、ありがとうございます。ちょっと調べてみます
6. Posted by AR8151   2015年01月24日 17:34
おっ、見ててくれたんだ。

2012年12月30日 nVIDIA 310.70 for Windows 2000 Beta
で報告しておいた、GetModuleHandleExA()も確認して下さいな。

GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x00000004)
The lpModuleName parameter is an address in the module.

----
CUDAとPhysXが有効にならないのはなんでだろう・ω・ <- 少なくともCUDAは有効になるよ

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
livedoor プロフィール

黒翼猫

【募集】Windows 2000で動かしたいソフト/ハードを貸してくださる方、コメントかTwitterでご連絡を。
【BM】はブクマ推奨記事です

My PC
SNOWSTORM(P5E3 Premium)
OS:Win2000AdvancedSv
CPU:Xeon(4Core) 2.83G
Memory:8G
VGA:NVIDIA GTX 780Ti
HDD:SSD(32G)
    +SATA(540G+180G)
Crystal SCR:244765
SNOWFOX2(W860CU)
CPU:Core i5-540M(2.53G)
OS:Win2000Pro
Memory:4G
VGA:Geforce GTX285M
HDD:SSD(160G)
Crystal SCR:176460
SNOWMOBILE3(CF-J10S)
CPU:Core i5-2410M(2.3G)
VGA:Intel HD Graphics
HDD:SSD(128G)
Windows2000
Memory:6G
Crystal SCR:133495
SNOWMOBILE(N10Jc/故障)
Windows2000/XP Home
Crystal SCR:38316
SNOWLEO(MA206J/A/休止)
OS:OSX 10.4 +
Windows2000Pro(Solo動作)
Crystal SCR:24061
Windows 2000の セキュリティ対策について
FFR yarai(脆弱性防御)
SymantecEndpointSecurity 11 MR7
Windows Defender
記事検索
訪問者数

    最近のアクセス数

    Win2000お勧め
    お勧め記事
    Misskey Win95対応Client
    ウイルス対策ソフトの評価の秘密
    Windows 2000でMinecraft
    WLU Tool
    .NET FrameworkのUninstall
    lolifox 0.3.8.x
    WindowsのシャットダウンTips
    Fox Launcher
    ウィルス感染を手動で見つける方法
    Unknown Hard Errorとサルベージ
    Dependency Walker 日本語化
    Ultra VNC 1.0.6/1.0.8 を日本語化
    IME補完計画
    BSoD(ブルースクリーン)特集
    デフラグ時の4つの心得
    不明なデバイス探し
    SETUPAPI/NTDLLBugFix
    DNSデボルブ用更新[KB957579]
    最新 update.sys!
    4Thread以上のCPU最適化
    Win2000マルチコアで最適化
    Windows 2000の通信速度改善1
    Windows 2000の通信速度改善2
    内蔵簡易FireWallを使う
    ワームに感染しないインストール
    Remote Desktop Client
    IME 辞書 Tips
    Win2000用セキュリティSOFT
    不要なファイルの削除
    Win2000カスタマイズ
    便利なキーボードショートカット
    6月末まで使える体験版セキュリティ

    非対応ハード動作編
    HTC NDIS Driver
    Intel HD Graphic Driver
    VMWare Player 3.1.x
    Conexant HD Audio Driver
    NVIDIA WHQL Driver
    Intel Chipset 最新 INF
    Sentelic Finger Pad Driver
    ATI Legacy Driver 10.2
    AMD Radeon Driver 8〜11
    ATI Ahci/Raid Driver
    Intel SATA AHCI Driver
    D21LC(eMobile)
    USB-WSIM
    UVC カメラ
    Logicool Webcam
    Logicool ゲームパッド
    XBOX360用コントローラー
    Logicool Mouse
    Microsoft IntelliPoint
    iPod Touch/iPhone Driver

    非対応アプリ動作編
    Flash Player 10.3
    Java 6 JRE
    Java 7.0 JRE
    ティルズウィーバー
    Natal Online
    コンチェルトゲートフォルテ
    シルクロードオンライン
    東方幻想麻雀
    IME2010 Installer
    Adobe Reader X for Win2000
    Baidu IME 2.x
    MMORPG ドルアーガーの塔
    Adobe Air for Windows 2000
    Baidu IME
    iTunes 10.x installer
    Evernote 4
    Janetter
    Second Life
    雀龍門
    Media Manager for PSP 2.5a
    .NET Framework 3.5SP1
    ATOK 月額版(2010/2011)
    Leaf 愛佳でいくの!!
    VistaのScreenSaver
    会計ソフト弥生シリーズ 10
    Vegas Movie Studio 9
    EyeBall Chat
    ・CanonPowerShot[Soft/DPP]
    Google SketchUp Pro 7
    dance mixer
    Lismo Port
    DivX
    SONY ScreenSaver
    mixi アプリ
    DivX v7.x
    ニコニコムービーメーカー(動画)
    RC-S330 PaSoRi
    Finale 2009
    ZoneAlarm 8.0
    ルナティア Online
    ストリートギアーズ
    xfy Blog Editor
    Photoshop Elements 7
    Premiere Elements 7
    PowerShell 1.0
    ai sp@ce
    電脳フィギュアARis
    VOCALOID2 ミク・リンレン
    Google Chrome/SRW Iron
    Media Player 10
    ・iTunes 7.6.2を使う方法
    QuickTime 7.5x/7.6x
    foobar2000 9.5.x/9.6.x
    RealPlayer11
    Safari3/4.0
    ShockwavePlayer10/11
    Windows Live Writer
    Live Messenger
    Veoh Web Player / Web TV
    Level-R

    追加機能・カスタマイズ編
    W2K Kernel32 改造計画【BM】
    W2K Update Rollup v2
    XNA/SlimDX
    CPU Core数リミット解除
    OutLook Express 6SP3
    MDAC 2.8 SP2
    GIF/PNGを使えるMSPAINT
    IE5でWindowsUpdate
    MSXML 4.0SP3
    DirectX9.0c(2010/Feb)+拡張
    MS09-062(Gdiplus.dll)更新
    Unicode 制御文字
    Internet Explorer6 Bonus Pack
    夏時間(DaylightSavingTime)
    レジストリバックアップを取る
    IME2007
    Windows Media Bonus Pack
    XPSファイルビューア
    Windows Defender
    文字化け対策(FontLink)
    Meirio(KB927489)
    msconfig
    圧縮フォルダ
    Windows Movie Maker
    IE5.01/5.5/6タブ化
    MediaTypeChanger(EISA構成)
    Win2000 SP4 Support Tool
    kill/tlist with Debugging Tools
    sc.exe with Resource kit
    reg.exe
    TaskTray 256色化
    ISO仮想CD/DVDドライバ
    IE6高速化とWSH 5.7/5.8
    MS Baseline Security Analyzer
    音声認識 API 5.1
    Text Service

    Win2000インストール編
    CF-J10S
    N10Jc
    ThinkPad X200(7454)
    Quad Core/X48/P5E3
    VAIO VGN Type S
    E6850搭載 サポートPC
    Let'snote CF-R6
    MacMini
    Dell LATITUDE D630
    Core i7 + X58 +ICH10R
    790FX + SB750
    Clevo W860CU
    最新コメント
    Categories
    アーカイブ

    このサイトはIE5.x/IE6
    IE5.x Internet Explorer 6.x

    Firefox Firefox ブラウザ無料ダウンロード
    で最適化されています。
    Technorati
    Add to iGoogle
    Amazon GIFTでカンパ

    Donation(寄付)