zmień identyfikator dostawcy USB / identyfikator produktu


9

Czy w systemie Windows XP jest jakiś prosty sposób na zmianę lub sfałszowanie identyfikatora dostawcy i produktu urządzenia USB? (zmiana odpowiednich ciągów opisowych również prawdopodobnie byłaby dobra)

Powiedzmy na przykład, że jest przydatny program, który oczekuje określonego urządzenia, ale nie rozumiesz, dlaczego powinieneś kupować nowe, gdy masz już bardzo podobne urządzenie, które prawdopodobnie będzie działać z programem.

Zrobiłem dużo Googlinga i najwyraźniej można to zrobić pod Linuksem, więc przychodzi mi na myśl, aby uruchomić Windows na maszynie wirtualnej pod Linuksem, ale byłoby to trochę niewygodne.

Odpowiedzi:


6

Możesz to zrobić za pomocą devcon (najprostszy sposób instalacji wymieniony tutaj) , narzędzia dostarczanego z Windows DDK / WDK. Link można znaleźć samodzielną wersję odpowiednią dla systemu Windows XP.

W szczególności devcon „s SetHwID komenda może być w stanie zrobić to, czego szukasz. Zobacz Przykłady strona dla niektórych ćwiczeń.

Nie jestem pewien, czy to zrobi dokładnie to, co chcesz, ale mam silne przeczucie, że może być tak blisko, jak to tylko możliwe, bez pisania własnego sterownika filtra. Jeśli zrobić potrzebę napisać własny sterownik, chwyć WDK i odczytać devcon źródłowego w src \ Setup \ DevCon .

Możesz także być w stanie użyć devcon na inne sposoby, aby osiągnąć swój cel, ale bez dalszych szczegółów trudno jest dokładnie powiedzieć, w jaki sposób. Powodzenia!


Jest to urządzenie HID i nie jest wyliczone jako root, więc sethwidgo nie dotknę :(
Hugh Allen

tak, tak też wyglądały moje testy, ale nie byłem pewien, czy poprawną składnię. : /
quack quixote

8

Identyfikator dostawcy USB / identyfikator produktu prawdopodobnie będzie zakodowany na stałe w oprogramowaniu sprzętowym urządzenia, a zatem może być niezmienny bez włamania się do oprogramowania układowego.

Ponieważ większość oprogramowania układowego jest chroniona przed zmianami, może to spowodować uszkodzenie urządzenia USB.

Przepraszam, że jestem negatywny, ale nie sądzę, że to możliwe.


3
Po co głosować za prawidłową odpowiedzią? Przyjęta powyżej odpowiedź nie zadziałała.
harrymc

„Nie da się tego zrobić” nigdy nie jest poprawną odpowiedzią na pytanie programowe [1], nie wspominając o całkowicie nieprzydatnej pomocy. Nie prosiłem o zmianę samego urządzenia, tylko widok aplikacji. [1] chyba że jest to coś niepoliczalnego w sensie Turinga.
Hugh Allen,

2
Twoje pytanie dotyczyło zmiany lub fałszowania. Sposób Turinga: to, o co prosiłeś, można zrobić tylko wtedy, gdy masz wiedzę na temat systemu Windows i / lub możesz załatać system operacyjny. Niską netykietą nie jest też głosowanie za osobami, które starają się unikać błędów.
harrymc

To jednak nie jest pytanie dotyczące oprogramowania. ;) // Nawet gdyby można było zmienić identyfikator urządzenia (który faktycznie jest przechowywany na samym urządzeniu), nadal byłoby to to samo urządzenie. Typ „podobny” nie jest tym samym typem. Najprawdopodobniej nie będzie w stanie zrobić tego, czego oczekuje oprogramowanie komputerowe.
Daniel B

1

Nie zrobiłem całkiem tego, o co prosisz, ale to może dać ci punkt wyjścia. Ponadto, robiłem takie rzeczy tylko w wersjach wcześniejszych niż Vista.

Informacje używane przez Menedżera urządzeń i Rejestr do kojarzenia ciągów z urządzeniami sprzętowymi są inicjowane z pliku .INF dostarczonego z urządzeniem. Na szczęście pliki .INF są plikami tekstowymi o strukturze podobnej do plików .INI, więc można z nimi łatwo pracować. Aby zmienić „tożsamość” istniejącego urządzenia:

  1. Przejdź do WINDOWS\INFkatalogu i znajdź odpowiedni plik. Prawdopodobnie będziesz musiał przeszukać wszystkie pliki .INF w celu znalezienia unikalnego ciągu związanego z urządzeniem.
  2. Utwórz kopię zapasową pliku.
  3. Otwórz plik .INF za pomocą edytora tekstu, znajdź sekcję [Ciągi] i zmień odpowiedni ciąg.
  4. W Menedżerze urządzeń odinstaluj i ponownie zainstaluj urządzenie.

Mamy nadzieję, że twoja aplikacja szuka tylko tego ciągu. Jeśli szuka unikalnego identyfikatora sprzętowego (zobaczysz to w pliku .INF jako numer magistrali i identyfikator sprzętowy, np. Bus \ VID_nnnn i PID_xxxx), ta technika nie będzie działać.


To ogólne urządzenie, które nie wymagało sterowników OEM. (co jest dobre, ale) Nie mogę znaleźć pliku INF (i szukałem identyfikatora produktu we wszystkich plikach INF).
Hugh Allen

@Hugh Allen - czy możesz podać więcej informacji? Na przykład, na jakim urządzeniu, na której magistrali jest włączona, w jaki sposób aplikacja rozpoznaje, że nie jest to oczekiwane urządzenie?
mtrw

mysz. USB. Nie wiem
Hugh Allen,

@Hugh Allen - jedyną rzeczą, którą mogę polecić, jest poszukiwanie istniejącego urządzenia w rejestrze \ HKLM \ SYSTEM \ CurrentControlSet, znajdowanie ciągu nazwy, wyszukiwanie VID / PID i szukanie numeru VID / PID w plikach INF. Jeśli jednak aplikacja, którą próbujesz oszukać, używa bezpośrednio VID / PID, ta technika nie będzie działać.
mtrw

@Hugh Allen - Przepraszam, nie kliknąłem wcześniej linku w pytaniu. Nie rozumiem, że chcesz zmienić numery VID / PID. Informacje, które ci dałem, zmieniłyby tylko łańcuchy. Pliki INF zależą od numerów VID / PID, nie należy ich definiować. Przepraszam, że poprowadziłem cię złą ścieżką.
mtrw
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.