Ignore:
Timestamp:
Dec 22, 2001, 1:34:06 PM (24 years ago)
Author:
sandervl
Message:

More information about about missing api

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/winimagepeldr.cpp

    r7660 r7670  
    1 /* $Id: winimagepeldr.cpp,v 1.93 2001-12-20 15:08:56 sandervl Exp $ */
     1/* $Id: winimagepeldr.cpp,v 1.94 2001-12-22 12:34:06 sandervl Exp $ */
    22
    33/*
     
    7676#endif
    7777
    78 ULONG WIN32API MissingApiOrd(char *dllname, int ordinal);
    79 ULONG WIN32API MissingApiName(char *dllname, char *functionname);
     78ULONG WIN32API MissingApiOrd(char *parentimage, char *dllname, int ordinal);
     79ULONG WIN32API MissingApiName(char *parentimage, char *dllname, char *functionname);
    8080ULONG WIN32API MissingApi(char *message);
    8181
     
    12781278}
    12791279//******************************************************************************
    1280 #define MISSINGOFFSET_PUSHORDINAL    1
    1281 #define MISSINGOFFSET_PUSHNAME       1
    1282 #define MISSINGOFFSET_PUSHDLLNAME    6
    1283 #define MISSINGOFFSET_FUNCTION       11
    1284 
    1285 char missingapicode[18] = {
     1280#define MISSINGOFFSET_PUSHNAME        1
     1281#define MISSINGOFFSET_PUSHORDINAL     1
     1282#define MISSINGOFFSET_PUSHDLLNAME     6
     1283#define MISSINGOFFSET_PUSHIMPORTIMAGE 11
     1284#define MISSINGOFFSET_FUNCTION        16
     1285
     1286char missingapicode[23] = {
     1287//push  ordinal/name
     1288        0x68, 0x00, 0x00, 0x00, 0x00,
    12861289//push  dllname
    12871290        0x68, 0x00, 0x00, 0x00, 0x00,
    1288 //push  ordinal/name
     1291//push  image loading api
    12891292        0x68, 0x00, 0x00, 0x00, 0x00,
    12901293//mov   ecx, MissingApiOrd/Name
     
    13131316
    13141317        memcpy(code, missingapicode, sizeof(missingapicode));
     1318        *(DWORD *)&code[MISSINGOFFSET_PUSHIMPORTIMAGE] = (DWORD)getModuleName();
    13151319        *(DWORD *)&code[MISSINGOFFSET_PUSHDLLNAME] = (DWORD)WinImage->getModuleName();
    13161320        *(DWORD *)&code[MISSINGOFFSET_PUSHORDINAL] = ordinal;
     
    13401344
    13411345        memcpy(code, missingapicode, sizeof(missingapicode));
     1346        *(DWORD *)&code[MISSINGOFFSET_PUSHIMPORTIMAGE] = (DWORD)getModuleName();
    13421347        *(DWORD *)&code[MISSINGOFFSET_PUSHDLLNAME] = (DWORD)WinImage->getModuleName();
    13431348        *(DWORD *)&code[MISSINGOFFSET_PUSHNAME]    = (DWORD)impname;
     
    20272032//******************************************************************************
    20282033//******************************************************************************
    2029 ULONG WIN32API MissingApiOrd(char *dllname, int ordinal)
    2030 {
    2031    char message[128];
    2032 
    2033    sprintf(message, "The application has called the non-existing api %s->%d", dllname, ordinal);
     2034ULONG WIN32API MissingApiOrd(char *parentimage, char *dllname, int ordinal)
     2035{
     2036   char message[256];
     2037
     2038   sprintf(message, "The application has called the non-existing api %s->%d (loaded by %s)", dllname, ordinal, parentimage);
    20342039   return MissingApi(message);
    20352040}
    20362041//******************************************************************************
    20372042//******************************************************************************
    2038 ULONG WIN32API MissingApiName(char *dllname, char *functionname)
    2039 {
    2040    char message[128];
    2041 
    2042    sprintf(message, "The application has called the non-existing api %s->%s", dllname, functionname);
     2043ULONG WIN32API MissingApiName(char *parentimage, char *dllname, char *functionname)
     2044{
     2045   char message[256];
     2046
     2047   sprintf(message, "The application has called the non-existing api %s->%s (loaded by %s)", dllname, functionname, parentimage);
    20432048   return MissingApi(message);
    20442049}
Note: See TracChangeset for help on using the changeset viewer.