Projekt TCP\IP VXD
written by CoxoC\CookieCrK

[.Historia.]

czerwiec-lipiec 2000

Podczas przegladania dokumentacji z pakietu WIN98DDK natkanlem sie na interesujaca
dokumentacje wykorzystania TCP/IP na poziomie VxD - 'TCP/IP VxD Interface'
Zaczalem wiec ja studiowac i szukac na sieci przykladow jej implementacji - nie udalo
mi sie jednak znalesc owych przykladow :(( Sprobowalem wiec na wlasna reke stworzyc
program, ktory by wykorzystywal ten interfejs. Jednym z pierwszych problemow jakie
napotkalem byl problem wprowadzenia do SoftICEa nazw funkcji (np. TdiOpenAddress).
Po paru dniach dzialania udalo mi sie to wreszcie ... recznie zrobilem plik MAP
a nastepnie wprowadzilem symbole do SICE.Nadeszla era debuggowania :) Hmm zaczalem
wiec od proby nawiazania polaczenia FTP (uzylem Windows Commandera) ku mojej radosci
pulapki zastawione na funkcje - opisane w TCP/IP VxD Interface - zadzialaly (I tutaj
mala ciekawostka WINSOCK uzywa tego interfejsu :))

lipiec 2000

Zaczalem wiec tworzyc pierwszy programik oparty na wnioskach wyciagnietych z debuggowania.
W WIN98DDK znalazlem pliki (TDI.H , TDIINFO.H , TDISTAT.H , TDIVXD.H , NDIS.H) z definicjami
struktur i oznaczen uzywanych przez funkcje interfejsu TCP/IP VXD. Zaczalem przepisywac je
do pliku INC (i tak powstal Mstcp.inc) . Pierwszym programem jaki napisalem byl program,
ktory nasluchiwal na polaczenia na porcie 21 i gdy przychodzila jakas paczka na port 21
komunikowal o tym uzytkownika przez pokazanie niebieskiego ekranu z wiadomoscia o powodzeniu.
Po tym malym sukcesie zaczely sie schody, gdyz gubilem sie juz w natloku informacji i nie
potrafilem dojsc do ladu gdzie i jakie dane sa przekazywane. Zaczalem wiec pisac TCP/IP
VXD Monitor'a . Na poczatku przejalem wszystkie API (funkcje interfejsu) szybko zauwazylem,
ze nie jest to wystarczajace, ze musze jeszcze przejac wszystkie zdarzenia (EVENTy).

sierpien 2000

Po pobycie w gorach i nad morzem zasiadlem wreszcie do rozwazan nad projektem ;) Musialem
troszke ochlonac aby poukladalo mi sie to wszystko w glowie ;)) Bylo to dosc dobre posuniecie
taktyczne ,gdyz w ciagu paru dni zaimplementowalem przejmowanie EVENTow :) Na poczatku, jak
zwykle, moj programik wieszal maszyne - po gruntownych analizach i prawdziwej burzy mozgu
znalazlem blad - byl to blad kompilatora MASM ... Az przytocze owy kawalek kodu :

BeginProc TDI_EVENT_RECEIVECall
[...]
PUSH DWORD PTR
PUSH DWORD PTR ;RcvEvent.Flags] <--- blad podczas kompilacji
PUSH DWORD PTR
PUSH DWORD PTR
CALL DWORD PTR
ADD ESP,4*8
[...]
EndProc TDI_EVENT_RECEIVECall

Gdy sprawdzicie definicje struktury RcvEvent zobaczycie, ze pozycji Flags odpowiada 08h
Natomiast MASM kompiluje ten kod z wartoscia 14h

wrzesien 2000

Po malutkiej przerwie znow zerknalem do zrodelek TCP\IP Monitora. Po zagladnieciu
do dokumentacji tym razem moja uwage przykula struktura _TDI_REQUEST - pozycje
RequestContext oraz RequestNotifyObject - w pozycjach tych, program ustawia procedure
Callback do API - i tak powstala nastepna wersja z funkcja Callbackow do API :))

pazdziernik 2000

Tym razem zaczalem od stworzenia programu MAKEMAP.VXD, ktory generuje automatycznie
plik MSTCP.MAP. Dzieli niemu mozemy szybko i sprawnie 'nauczyc' SoftICE'a nowych
symboli (jesli MAKEMAP.VXD nie tworzy pliku MAP, nalezy doinstalowac Protokol TCP\IP).

listopad 2000

Znudzil juz mi sie ten projekt ... postanawiam wiec go opublikowac ... moze ktos kiedys
skusi sie na jego kontynuacje ... jakby co to piszcie ;) To tyle ... sami ocenicie czy temat
wart jest przyslowiowej swieczki :)

CoxoC\CookieCrK
email : coxoc@cookiecrk.org

---------8<---------------

ps : sorry cant translate it - look in src. + .pdf
i split the file in two files because of the size...ddk and project.dl booth
Posted on 2002-01-07 20:56:03 by Max
heres the important DDK.zip
Posted on 2002-01-07 21:17:19 by Max
What langauge is that?

It appears to be Russian or maybe even Romanian, but a russian-to-english babelfish translation doesn't make the text any more readable than it is now to my eyes. :)
Posted on 2002-01-08 11:51:03 by Will
I think it's polish.
Posted on 2002-01-08 19:48:38 by f0dder
It can NOT be Romanian :)

Romanian is a romanic language, Romanian looks more like Italian :)

Some romanian for your example:

Aceasta este limba romana, dar oricum cred ca nu intzelege nimeni ce vorbesc eu aici, poate in afara de doi trei useri din romania. Vorba cuiva: oare ce este mai rau: necunoasterea sau apatia? raspuns: cine stie si apoi ce conteaza?


We are alone in our country, isolated, with slavonic races all arround us, a relicv of the past and of course we are vampires, but i guess you allready know that :)

Bottom Line:
================
Please do not post message in other languages but English
let's keep this board readable for everybody (as english is a very easy language)
Posted on 2002-01-13 06:47:56 by BogdanOntanu
Well bogdan, as usual my ignorance shines through fairly bright. ;) Obviously max's post was in some sort of European language. I only suggested that it might be Romanian because of the preponderance of c's and z's. Thanks for setting me straight!
Posted on 2002-01-13 12:18:22 by Will
That's Czech.
Posted on 2005-08-31 13:46:06 by inFinie
LoL it's Polish but with standard ANSI characters instead of national Polish characters. .

it's about some unfinished, abandoned project on "tcp/ip on VXD level". the whole thing is a story of making it ( lol :| ). the bottom lines say: "(...)I'm bored with it, so I decided to make it public. if you're interested, then you may continue to finish it, and in case you  are - you can wrtie to me.(...)"

Romanian is whole lot different, like BogdanOntanu said. Russian is quite different too. Czech is similiar, and can be easily mistaken with Polish (it's the same language group and sub-group).

I wonder how useful would be finishing such project in the age of .NET etc :|
Posted on 2005-08-31 14:29:03 by ti_mo_n
9x is hardly useful anymore, and TCP/IP at the VxD level? Ho hum.

It can be useful at kernel model level if you're writing a kernel mode debugger for NT, but... 9x? Nah :)
Posted on 2005-08-31 16:25:17 by f0dder
Interesting link:
Language Guesser http://www.xrce.xerox.com/competencies/content-analysis/tools/guesser-ISO-8859-1.en.html
Posted on 2006-01-02 14:45:13 by inFinie