Copy Link
Add to Bookmark
Report

Minotauro Magazine Issue 10 02 Numeros ordinales de APIs

eZine's profile picture
Published in 
Minotauro Magazine
 · 3 years ago

  

MINOTAURO MAGAZINE #10

Numeros ordinales de APIs
por Trurl

En la VLAD 5 sali¢ una nota muy interesante que tra¡a todos los numeros
ordinales de las APIs de KERNEL. Aparentemente Quantum iba cambiando a mano
los numeros en el file y viendo que API produc¡an, hasta que termino la lista.
Yo no tuve mejor idea que hacer un programita que te muestra todas las
funciones exportadas de un ejecutable, con sus numeros, y me di cuenta de que
se le habian escapado algunas API, porque paro en el n£mero F0h y hay APIs
exportadas en KRNL386.EXE hasta 160h. As¡ que les mando de nuevo una lista
mejor; y adem s de yapa el programa que te muestra los exports de un EXE de
Windows, de modo que con solo usar el programa pueden descubrir ustedes mismo
los numeros ordinales de todos los exports de GDI, USER, o de hecho de
cualquier DLL o EXE (o DRV incluso) que se les cruce por adelante.

Los ordinales son (est n en orden creciente):

File: krnl386.exe
Nombre descriptivo: Microsoft Windows Kernel Interface Version 3.10 (0000)
Nombre del modulo: KERNEL (0000)

FATALEXIT (0001)
EXITKERNEL (0002)
GETVERSION (0003)
LOCALINIT (0004)
LOCALALLOC (0005)
LOCALREALLOC (0006)
LOCALFREE (0007)
LOCALLOCK (0008)
LOCALUNLOCK (0009)
LOCALSIZE (000A)
LOCALHANDLE (000B)
LOCALFLAGS (000C)
LOCALCOMPACT (000D)
LOCALNOTIFY (000E)
GLOBALALLOC (000F)
GLOBALREALLOC (0010)
GLOBALFREE (0011)
GLOBALLOCK (0012)
GLOBALUNLOCK (0013)
GLOBALSIZE (0014)
GLOBALHANDLE (0015)
GLOBALFLAGS (0016)
LOCKSEGMENT (0017)
UNLOCKSEGMENT (0018)
GLOBALCOMPACT (0019)
GLOBALFREEALL (001A)
1B : Indefinida
GLOBALMASTERHANDLE (001C)
YIELD (001D)
WAITEVENT (001E)
POSTEVENT (001F)
SETPRIORITY (0020)
LOCKCURRENTTASK (0021)
SETTASKQUEUE (0022)
GETTASKQUEUE (0023)
GETCURRENTTASK (0024)
GETCURRENTPDB (0025)
SETTASKSIGNALPROC (0026)
27 : Indefinida
28 : Indefinida
ENABLEDOS (0029)
DISABLEDOS (002A)
2B - Indefinida
2C - Indefinida
LOADMODULE (002D)
FREEMODULE (002E)
GETMODULEHANDLE (002F)
GETMODULEUSAGE (0030)
GETMODULEFILENAME (0031)
GETPROCADDRESS (0032)
MAKEPROCINSTANCE (0033)
FREEPROCINSTANCE (0034)
CALLPROCINSTANCE (0035)
GETINSTANCEDATA (0036)
CATCH (0037)
THROW (0038)
GETPROFILEINT (0039)
GETPROFILESTRING (003A)
WRITEPROFILESTRING (003B)
FINDRESOURCE (003C)
LOADRESOURCE (003D)
LOCKRESOURCE (003E)
FREERESOURCE (003F)
ACCESSRESOURCE (0040)
SIZEOFRESOURCE (0041)
ALLOCRESOURCE (0042)
SETRESOURCEHANDLER (0043)
INITATOMTABLE (0044)
FINDATOM (0045)
ADDATOM (0046)
DELETEATOM (0047)
GETATOMNAME (0048)
GETATOMHANDLE (0049)
OPENFILE (004A)
OPENPATHNAME (004B)
DELETEPATHNAME (004C)
RESERVED1 (004D)
RESERVED2 (004E)
RESERVED3 (004F)
RESERVED4 (0050)
_LCLOSE (0051)
_LREAD (0052)
_LCREAT (0053)
_LLSEEK (0054)
_LOPEN (0055)
_LWRITE (0056)
RESERVED5 (0057)
LSTRCPY (0058)
LSTRCAT (0059)
LSTRLEN (005A)
INITTASK (005B)
GETTEMPDRIVE (005C)
GETCODEHANDLE (005D)
DEFINEHANDLETABLE (005E)
LOADLIBRARY (005F)
FREELIBRARY (0060)
GETTEMPFILENAME (0061)
GETLASTDISKCHANGE (0062)
GETLPERRMODE (0063)
VALIDATECODESEGMENTS (0064)
NOHOOKDOSCALL (0065)
DOS3CALL (0066)
NETBIOSCALL (0067)
GETCODEINFO (0068)
GETEXEVERSION (0069)
SETSWAPAREASIZE (006A)
SETERRORMODE (006B)
SWITCHSTACKTO (006C)
SWITCHSTACKBACK (006D)
PATCHCODEHANDLE (006E)
GLOBALWIRE (006F)
GLOBALUNWIRE (0070)
__AHSHIFT (0071)
__AHINCR (0072)
OUTPUTDEBUGSTRING (0073)
INITLIB (0074)
OLDYIELD (0075)
GETTASKQUEUEDS (0076)
GETTASKQUEUEES (0077)
UNDEFDYNLINK (0078)
LOCALSHRINK (0079)
ISTASKLOCKED (007A)
KBDRST (007B)
ENABLEKERNEL (007C)
DISABLEKERNEL (007D)
MEMORYFREED (007E)
GETPRIVATEPROFILEINT (007F)
GETPRIVATEPROFILESTRING (0080)
WRITEPRIVATEPROFILESTRING (0081)
FILECDR (0082)
GETDOSENVIRONMENT (0083)
GETWINFLAGS (0084)
GETEXEPTR (0085)
GETWINDOWSDIRECTORY (0086)
GETSYSTEMDIRECTORY (0087)
GETDRIVETYPE (0088)
FATALAPPEXIT (0089)
GETHEAPSPACES (008A)
DOSIGNAL (008B)
SETSIGHANDLER (008C)
INITTASK1 (008D)
8E - 95 : Indefinidas
DIRECTEDYIELD (0096)
WINOLDAPCALL (0097)
GETNUMTASKS (0098)
99 : Indefinida
GLOBALNOTIFY (009A)
GETTASKDS (009B)
LIMITEMSPAGES (009C)
GETCURPID (009D)
ISWINOLDAPTASK (009E)
GLOBALHANDLENORIP (009F)
EMSCOPY (00A0)
LOCALCOUNTFREE (00A1)
LOCALHEAPSIZE (00A2)
GLOBALLRUOLDEST (00A3)
GLOBALLRUNEWEST (00A4)
A20PROC (00A5)
WINEXEC (00A6)
GETEXPWINVER (00A7)
DIRECTRESALLOC (00A8)
GETFREESPACE (00A9)
ALLOCCSTODSALIAS (00AA)
ALLOCDSTOCSALIAS (00AB)
ALLOCALIAS (00AC)
__ROMBIOS (00AD)
__A000H (00AE)
ALLOCSELECTOR (00AF)
FREESELECTOR (00B0)
PRESTOCHANGOSELECTOR (00B1)
__WINFLAGS (00B2)
__D000H (00B3)
LONGPTRADD (00B4)
__B000H (00B5)
__B800H (00B6)
__0000H (00B7)
GLOBALDOSALLOC (00B8)
GLOBALDOSFREE (00B9)
GETSELECTORBASE (00BA)
SETSELECTORBASE (00BB)
GETSELECTORLIMIT (00BC)
SETSELECTORLIMIT (00BD)
__E000H (00BE)
GLOBALPAGELOCK (00BF)
GLOBALPAGEUNLOCK (00C0)
__0040H (00C1)
__F000H (00C2)
__C000H (00C3)
SELECTORACCESSRIGHTS (00C4)
GLOBALFIX (00C5)
GLOBALUNFIX (00C6)
SETHANDLECOUNT (00C7)
VALIDATEFREESPACES (00C8)
REPLACEINST (00C9)
REGISTERPTRACE (00CA)
DEBUGBREAK (00CB)
SWAPRECORDING (00CC)
CVWBREAK (00CD)
ALLOCSELECTORARRAY (00CE)
ISDBCSLEADBYTE (00CF)
D0 - 135 : Indefinidas
LOCALHANDLEDELTA (0136)
GETSETKERNELDOSPROC (0137)
138 - 139 : Indefinidas
DEBUGDEFINESEGMENT (013A)
WRITEOUTPROFILES (013B)
GETFREEMEMINFO (013C)
13D : Indefinida
FATALEXITHOOK (013E)
FLUSHCACHEDFILEHANDLE (013F)
ISTASK (0140)
141 : Indefinida
ISROMMODULE (0143)
LOGERROR (0144)
LOGPARAMERROR (0145)
ISROMFILE (0146)
K327 (0147)
_DEBUGOUTPUT (0148)
K329 (0149)
149 - 14B : Indefinidas
THHOOK (014C)
14D : Indefinida
ISBADREADPTR (014E)
ISBADWRITEPTR (014F)
ISBADCODEPTR (0150)
ISBADSTRINGPTR (0151)
HASGPHANDLER (0152)
DIAGQUERY (0153)
DIAGOUTPUT (0154)
TOOLHELPHOOK (0155)
156 : Indefinida
REGISTERWINOLDAPHOOK (0157)
GETWINOLDAPHOOKS (0158)
ISSHAREDSELECTOR (0159)
ISBADHUGEREADPTR (015A)
ISBADHUGEWRITEPTR (015B)
HMEMCPY (015C)
_HREAD (015D)
_HWRITE (015E)
BUNNY_351 (015F)
160 : Indefinida
__GP (0156) [Nota: Esta est  en la resident name table]
LSTRCPYN (0161)
GETAPPCOMPATFLAGS (0162)
GETWINDEBUGINFO (0163)
SETWINDEBUGINFO (0164)
165 - 192 : Indefinidas
K403 (0193)
K404 (0194)
195 - FFFF : Indefinidas

Como es obvio la mayor parte de estas APIs no est n en la documentaci¢n
(son "indocumentadas"). Algunas son realmente intrigantes.. por ejemplo:
BUNNY_351. Que es eso macaya? __GP, ser  acaso el (G)eneral (P)rotection
[Fault] Handler de Win? Hay otra que se llama HasGPHandler.. mhm. Adem s __GP
es la £nica que esta en la resident names table; las dem s son nonresident, lo
cual refuerza esta idea ya que un handler de GPF debe estar siempre en memoria
etc. Otras interesantes son las que hacen obvia alusi¢n a alg£n segmento com£n
de memoria: __0040 (Variables de BIOS), __A000 (Video), _0000 (IVT); ser n
APIs que retornan selectores que dan acceso a esas areas de memoria? Quiz .
(De todos modos yo no las usar¡a porque en la API de Win32 es casi seguro que
no est n mas).
En cuanto a que fin practico sirve esta lista, es muy sencillo; ninguno
en principio. Pero quiz  en alg£n momento hagan un virus de Windows y necesi-
ten hacer la tabla de realocaci¢n "a mano" en el source; en ese caso van a
tener que usar esta tabla (y otra similar por cada modulo que necesiten adem s
del kernel; para lo cual les va a ser muy £til el programita). Ya se que las
posibilidades de que uds. hagan un virus de Windows en este milenio o en el
que viene son remotas, pero por algo hay que empezar. (Je Je Je). ¨Aparte,
quien invento eso de que para publicarlo en una revista tiene que ser £til?
¨Acaso el under argentino no esta poblado de revistas que prueban lo contra-
rio? (pregunta que tambi‚n puede articularse como: ¨queda alguien en la
galaxia que no haya le¡do al menos cinco art¡culos distintos sobre como hacer
una bomba ansi?)
En fin... lindo e interesante y etc. Enjoy
Trurl

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT