Steward
分享是一種喜悅、更是一種幸福
驅動程式 - Windows Driver Model (WDM) - 使用範例 - Assembly (ObjAsm) - 開發環境
參考資訊:
https://github.com/steward-fu/wadk
https://github.com/steward-fu/website/releases/download/wdm
司徒目前使用Debian做為開發測試環境,Assembler使用UASM Linux版本,Linker則是使用lld-link,測試的作業系統目前使用Windows XP,模擬器使用QEMU(qemu-system-i386),由於QEMU支援Snapshot功能,因此只要做好Snapshot的環境,就可以相當方便測試WDM驅動程式
UASM
$ cd
$ git clone https://github.com/Terraspace/UASM -b v2.57r
$ cd UASM
$ vim H/globals.h +36
#define inline
$ vim Makefile_Linux.mak
22: c_flags =-w -std=c99 -Wno-int-conversion -Wno-incompatible-function-pointer-types -D __UNIX__ $(extra_c_flags)
24: CC = clang
$ make -f Makefile_Linux.mak
$ sudo cp GccUnixR/uasm /usr/local/bin/
lld-link、wine、box86
$ sudo apt-get install gcc-arm* lld wine wine32-tools wine-development libwine fonts-wine -y $ cd $ git clone https://github.com/ptitSeb/box86 $ mkdir box86/build $ cd box86/build $ cmake .. $ make $ sudo make install
使用司徒預先做好的Windows XP、Wine環境
$ cd
$ wget https://github.com/steward-fu/website/releases/download/wdm/winxp.gz
$ wget https://github.com/steward-fu/website/releases/download/wdm/winxp.qcow2
$ wget https://github.com/steward-fu/website/releases/download/wdm/myqemu
$ wget https://github.com/steward-fu/website/releases/download/wdm/wine_env.tar.gz
$ sudo mkdir /opt/qemu
$ sudo mv winxp.qcow2 winxp.gz /opt/qemu
$ sudo mv myqemu /usr/local/bin
$ sudo chmod a+x /usr/local/bin/myqemu
$ sudo vim /usr/local/bin/myx86
#!/bin/bash
WINEPREFIX=~/.wine_x86 box86 wine "$@"
$ sudo chmod a+x /usr/local/bin/myx86
$ tar xvf wine_env.tar.gz
$ myx86 --version
wine-10.0 (Debian 10.0~repack-6)
Clone wadk
$ cd $ git clone https://github.com/steward-fu/wadk $ sudo mv wadk /opt
假如在Windows WSL環境測試,記得設定wslconfig
C:\> vim ~/.wslconfig
[wsl2]
guiApplications=true
nestedVirtualization=true