Merici pristroje k PC.

Miroslav Sinko sinkomiro@rocketmail.com
Pátek Leden 11 01:15:54 CET 2008


--- Delphin <delphin@post.cz> wrote:
> > Port.dll zo zmienenej knihy nepoznam, ale sama o sebe urcite nevie
> > zabezpecit pristup na I/O porty pod WinNT. K tomu je potrebny sys. 
> > Zo
> > znamych napr. giveio.sys, UserPort.sys, apod. Ak port.dll umoznuje
> > aplikacii pristup k portom (COM, LPT), tak potom je v nej kod
> > pouzivajuci WinAPI.
> 
> Pro vylouceni zmatku jsem si port.dll nechal dissasemblovat a myslim
> si, ze 
> se tim vse vyjasnilo:
> 0x8148  - 0xc INPORT(dword param_1)
>  0x0000    PUSH                EBP
>  0x0001    MOV                 EBP,ESP
>  0x0003    MOV                 DX,SS:[EBP+8]
>  0x0007    IN                  AL,DX
>  0x0008    POP                 EBP
>  0x0009    RETN                0x0004
> 
> 0x8154  - 0xf OUTPORT(dword param_1, dword param_2)
>  0x0000    PUSH                EBP
>  0x0001    MOV                 EBP,ESP
>  0x0003    MOV                 AL,SS:[EBP+12]
>  0x0006    MOV                 DX,SS:[EBP+8]
>  0x000a    OUT                 DX,AL
>  0x000b    POP                 EBP
>  0x000c    RETN                0x0008

Tvrdil som, ze samotna port.dll bez ovladaca sys (ak v nej nie su
volane funkcie Win32API) pristup na port pod NT platformou nezabezpeci.
Tak som pohladal a nasiel na http://lpt.hw.cz/ zmienenu DLL s headrom
(sice basic, ale nevadi :-). Okrem toho, ze to pisu, ze zafunguje len
pod 95-Me, som si napisal program:

#include <windows.h>
#include <stdio.h>

typedef void (*fpOUTPORT)(DWORD, DWORD);

void main(void)
{
HMODULE hPortDll;
fpOUTPORT fpOutPort;

 hPortDll=LoadLibrary("port.dll");
 if(!hPortDll)
 {
  printf("LoadLibrary error\n");
  return;
 }

 fpOutPort=(fpOUTPORT)GetProcAddress(hPortDll, "OUTPORT");
 if(!fpOutPort)
 {
  printf("GetProcAddress OUTPORT error\n");
  return;
 }

 fpOutPort(0x378, 0);

 printf("Yes! Press any key\n"); 
 getchar();
}

Vysledkom spustenia na W2k je "The exception Privileged instruction".
Podla ocakavania...

 
> S WinNT jsem nemel tu cest, ale na W2K aWXP funguje neoverlapped i 
> overlapped paralelne z 5-ti COMu, vyzkouseno. 

Hmmm, tak toto niekedy tiez vyskusam, ked nieco robim, tak uz len
overlapped...

miro




      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs



Další informace o konferenci Hw-list