<<< NOTED::NOTES$7:[NOTES$LIBRARY]HACKERS.NOTE;1 >>> -< ** Hackers ** >- ================================================================================ Note 1832.12 ldr$unload_image 12 of 15 UTRTSC::VDBURG "Change mode to PANIC" 73 lines 27-MAR-1997 01:40 -< SMONLOAD.C >- -------------------------------------------------------------------------------- #include #include #include #include #include #include #define IMAGE "SMON.EXE" #define TABLE "LNM$SYSTEM_TABLE" #define LOGNAM "SMON$HANDLE" #ifdef ALPHA #include #else #ifndef LDR_DYN$M_UNL #define LDR_DYN$M_UNL 2 #endif #endif typedef struct itmlst { short size; short item; char *buffer; char *retlen; } ITEMS; int ldr$load_image(); int main() { int stat; unsigned int handle[3]; unsigned int arglist[4]; $DESCRIPTOR(imgdsc,IMAGE); $DESCRIPTOR(tblname,TABLE); $DESCRIPTOR(logname,LOGNAM); ITEMS lnmlst[4]; char h1[9], h2[9], h3[9]; arglist[0] = 3; arglist[1] = (int) &imgdsc; #ifdef ALPHA arglist[2] = LDR$M_UNL; #else arglist[2] = LDR_DYN$M_UNL; #endif arglist[3] = (int) handle; stat = sys$cmkrnl(&ldr$load_image,arglist); if (!(stat & 1)) lib$stop(stat); printf("Image %s loaded successfully.\nAddress:\t%08.8X\nLDRIMG block:\t%08.8X\nSeq. number:\t%08.8X\n", IMAGE, handle[0], handle[1], handle[2]); sprintf(h1,"%08.8X",handle[0]); sprintf(h2,"%08.8X",handle[1]); sprintf(h3,"%08.8X",handle[2]); lnmlst[0].size = 8; lnmlst[0].item = LNM$_STRING; lnmlst[0].buffer = h1; lnmlst[0].retlen = 0; lnmlst[1].size = 8; lnmlst[1].item = LNM$_STRING; lnmlst[1].buffer = h2; lnmlst[1].retlen = 0; lnmlst[2].size = 8; lnmlst[2].item = LNM$_STRING; lnmlst[2].buffer = h3; lnmlst[2].retlen = 0; lnmlst[3].size = 0; lnmlst[3].item = 0; stat = sys$crelnm(0,&tblname,&logname,&PSL$C_EXEC,&lnmlst); if (!(stat & 1)) lib$stop(stat); }