<<< NOTED::DISK$NOTES7:[NOTES$LIBRARY_7OF4]HACKERS.NOTE;1 >>> -< ** Hackers ** >- ================================================================================ Note 751.19 Need to force a process dump 19 of 20 CSC32::BLAYLOCK "If at first you doubt,doubt again" 100 lines 30-MAY-1996 19:18 -------------------------------------------------------------------------------- You could turn the image dump bit off and then use you signal handler to invoke the process dump utility on the conditions that you do want. ; <<< VAXWRK::$1$DUS6:[NOTES$LIBRARY]VMSNOTES.NOTE;1 >>> ; -< VAX/VMS and more. *** DIGITAL INTERNAL USE ONLY *** >- ;========================================================================= ======= ;Note 2924.4 Process dump from a LINK/NOTRACEBACK image? 4 of 4 ;CSC32::BLAYLOCK "If at first you doubt,doubt again." 63 lines 16-OCT-1989 22:21 ;------------------------------------------------------------------------- ------- ; ; ; An image link /NOTRACEBACK will produce a dump. However, the code that ; initiates a process dump (EXE$CATCH_ALL) checks the privileges of the ; process with that of the installed privileges and the process privs are ; at least equal a dump is written (having SETPRV or CMKRNL will also ; allow for a process dump). Also note that all shareable images must be ; installed including SYS$SHARE:IMGDMP.EXE. ; ; If you are really gutsy, you can do what EXE$IMGDMP_MERGE does ; ([SYS.LIS]PROCSTRT.LIS) and JSB to the image dump code ; you activated (SYS$SHARE:IMGDMP.EXE). All of which is unsupported. ; ; -kgb ; ; Alpha Changes: ; ; The psects are added. Change the interface to image dump to ; be call versus jsb. ; ; Build: ; ; MACRO /OBJ=IMAGE_DUMP SYS$SHARE:ARCH_DEFS+SYS$DISK:[]IMAGE_DUMP ; ; .library /sys$share:lib/ .psect data, rd, wrt, noexe $chfdef ; Condition hadller offsets $iacdef ; Image activation definitions $ssdef ; System Service return values imgnam: .ascid /IMGDMP/ ; Image name to activate defnam: .ascid /SYS$SHARE:.EXE/ ; Default location INADR: .long ^x200,1@30-1 ; Use P0 space to activate into retadr: .quad ; Return address locations hdrbuf: .blkb 512 ; Space for the image header imgact_list: ; Argument list for $IMGACT_G $imgact name=imgnam, - ; Image name address dflnam=defnam, - ; Default name address imgctl=,- ; Flags hdrbuf=hdrbuf, - ; Header buffer inadr=inadr, - ; For EXPREG purposes retadr=retadr ; Return what we want here .psect code, rd, nowrt, exe .entry test, 0 ; Routine entry point ; ; Establish a condition handler so that the argument pointer ; is set up for a proper condition. ; moval signal_handler, (fp) ; ; Now cause an exception that we will pick up. ; movl 0, r0 ; Reference address 0 ACCVIO ret ; End of code .entry signal_handler, ^m $imgact_g - ; Image activate the dump code imgact_list blbc r0, exit ; Go no further on error $imgfix_s ; Perform the fixups blbc r0, exit ; movl retadr, r1 ; Get the beginning of the image .if df, evax movl (r1), r1 ; Get the procedure address pushl ap ; set up the argument list calls #1, (r1) ; call the image dump routine. .iff addl3 8(r1), r1, r1 ; Get the code offset from ; the internal vector jsb (r1) ; and jump to it. .endc exit: movl #ss$_resignal, r0 ; let the error continue on ... RET .end test ; transfer address