Sterownik w trybie jądra w assemblerze (MASM)

0

Witam serdecznie wszystkich.

Otóż dziś sobie zajrzałem do książki którą przeczytałem jakieś rok temu. Chciałem się pobawić tworzeniem sterowników.
Mam pliki:
kern.inc i sound.asm

Według książki assembluje i linkuje za pomocą polecenia:
ml /c /coff sound.asm
****ink /driver /base:0x1000 /subsystem:native sound.obj ****

Cała operacja przebiega pomyślnie i generuje plik:
sound.exe

Po uruchomieniu aplikacji sound.exe wyskakuje komunikat:
masm_error.PNG

System Operacyjny:
Windows 7 Home Premium 64bit

Bardzo dziękuje za każdą pomoc.

0

A sterownik w systemach win 7+ nie musi być czasem podpisany certem?

0

Nie wiem. W książce raczej autor nic nie wspominał. Pokazał jak to assemblować i linkować ale jak uruchomić to nie.

1

A sterownik to nie trzeba czasem zainstalować? Zmienić rozszerzenie na *.drv?
Czym to odpalasz? Explorerem?

https://www.apriorit.com/qa-blog/464-windows-driver-testing-basics

2

A kod jest na pewno 64-bitowy? Jak sądzę 64bitowe jądro potrzebuje 64bitowych sterowników, a komunikat mówi coś o trybie Win32, więc pewnie kod jest 32bit. Ewentualnie kod 64-bit, ale format pliku 32, ale przypuszczam, że wtedy by się nie skompilowało.

1

Nie pisałem nigdy sterowników pod Windows, ale jestem przekonany że nie są to exeki do bezpośredniego odpalenia, tylko wymagają jakiegoś procesu instalacji w systemie.

0

@elwis: Jeśli chodzi o kod to korzystam z 32 bitowych rejestrów i czasami z 8 bitowych. Jeśli trzeba mogę udostępnić kod pliku asm jak inc.
@Azarien Też byłem zdziwiony że wychodzi exe. Ale robiłem wszystko wedłgu książki. Dokładnie nazywa się to sterownik trybu jądra. Autro napisał że żeby ten plik z assemblować i linkować wystarczy użyć takich poleceń:

ml /c /coff sound.asm
link /driver /base:0x1000 /subsystem:native sound.obj

I efektem działania jest plik sound.exe.

Jeśli będą potrzebne jakieś jeszcze informacje to proszę pisać. Będę dostarczał odpowiednich informacji.

Życzę miłego dnia/wieczora.

1

Jeśli w przykładach nie było 64-bitowych rejestrów, prawdopodobnie książka jest o programowaniu pod 32-bity, bo choćby wskaźniki muszą być 64-bitowe. Nie wiem jak duża różnica jest na poziomie modułów jądra, ale na pewno kod by nie działał. Z tego co widzę, to MASM ma odrębną binarkę dla 64-bitów ml64.exe

0

W książce w ogóle nie było przykładów z 64 bitowymi rejestrami. W przykładzie tego sterownika w trybie jądra są maskymalnie wykorzystywane 32 bitowe rejestry.Assembler to masm32 który ściągnałem z internetu. Książka to **** "Assembler Podręcznik Programisty"****

0

Niestety, to jest zmora materiałów niskopoziomowych, że często są archaiczne. Jeśli piszesz to po to, żeby popróbować to możesz pobawić się na maszynie wirtualnej.

0

Okej. Czyli podsumując wszystko jest okej tylko ten sterownik w trybie jądra jest napisany na windows w wersji 32 bity. Więc muszę go przerobić na składnię 64 bity i użyć ml64 zamiast ml.
Dobrze rozumiem ?

0

Wychodzi ci exe a w książce napisali co trzeba z tym exekiem zrobić? Bo tak wprost go nie uruchomisz, niezależnie od tego czy architektura jest dobra czy nie.

0

W książce nie napisali co trzeba z nim zrobić , jak przetestować. Ale poczytałem parę stron i dowiedziałem się że są to sterowniki ****WDM Windows **** czyli Windows Driver Model. Poczytałem na Wikipedi i tam napisali że musi być odzielny sterownik na Windows 32 bit jak i na 64 bit. Więc coś czuję że problem może leżeć w architekturze sterownika lecz pewny nie jestem. Muszę przetesować Masm w wersji 64 bit. I jak coś to jak taki sterownik przetestować ? . Działaniem tego sterownika jest wydanie dźwięku i koniec.

0

Nie wiem jak przetestować.
Ale problem innej architektury możesz rozwiązać przez zainstalowanie 32-bitowego systemu* na wirtualnej maszynie - vmware albo Virtual Box, zresztą to byłoby zalecane też z innego powodu, byś nie wywalił sobie systemu wadliwym sterownikiem…

*) ostatni Windows który ma 32-bitową odmianę to Windows 10.

1 użytkowników online, w tym zalogowanych: 0, gości: 1