├── CommandPrograms ├── cmcallbacks.wbs ├── listprocs.wbs └── pscallbacks.wbs ├── JavaScript └── ListProcs.js └── README.md /CommandPrograms/cmcallbacks.wbs: -------------------------------------------------------------------------------- 1 | $$ cmcallbacks.wbs 2 | $$ 3 | $$ Version 2 4 | $$ 5 | $$ This script walks the list of registered Configuration Manager (registry) 6 | $$ callbacks 7 | $$ 8 | $$ Currently tested platforms: 9 | $$ 10 | $$ Win8.1 x64 11 | $$ 12 | $$ Win7 x64 13 | $$ 14 | $$ WinXP x86 15 | $$ 16 | $$ OSR Open Systems Resources, inc. 17 | $$ 18 | $$ http://www.osr.com 19 | $$ http://www.osronline.com 20 | $$ 21 | $$ 22 | $$ To run: 23 | $$ 24 | $$ $$>Flink) 105 | 106 | $$ And loop while we have entries... 107 | 108 | .while (${listEntry} != ${CmCallBackListHead}) 109 | { 110 | $$ Dump the callback 111 | 112 | .if (@$ptrsize == 4) 113 | { 114 | u poi(${listEntry} + ${CallBackOffsetx86}) l1 115 | } 116 | .else 117 | { 118 | u poi(${listEntry} + ${CallBackOffsetx64}) l1 119 | } 120 | 121 | $$ Move on to the next entry. Our r? command makes sure 122 | $$ that ${listEntry} is typed appropriately 123 | 124 | r? ${listEntry} = @@c++(${listEntry}->Flink); 125 | 126 | .echo --------------------------------------------; 127 | 128 | } 129 | } 130 | 131 | } 132 | 133 | 134 | $$ Clean up our aliases 135 | ad ${/v:listEntry}; 136 | ad ${/v:BuildNumber}; 137 | ad ${/v:CmCallBackCount}; 138 | ad ${/v:CmCallBackListHead}; 139 | ad ${/v:CallBackOffsetx86}; 140 | ad ${/v:CallBackOffsetx64}; 141 | ad ${/v:CmCallBackBase}; 142 | ad ${/v:i}; 143 | ad ${/v:cmEntry}; 144 | ad ${/v:functionPtr}; 145 | 146 | -------------------------------------------------------------------------------- /CommandPrograms/listprocs.wbs: -------------------------------------------------------------------------------- 1 | $$ 2 | $$ listprocs.wbs 3 | $$ 4 | $$ Walk the current list of processes 5 | $$ 6 | $$ OSR Open Systems Resources, inc. 7 | $$ 8 | $$ http://www.osr.com 9 | $$ http://www.osronline.com 10 | $$ 11 | $$ 12 | $$ To run: 13 | $$ 14 | $$ $$>Flink) 54 | 55 | $$ And loop while we have entries... 56 | 57 | .while (${listEntry} != ${PsActiveProcessHead}) 58 | { 59 | 60 | $$ Get the base of the struct from the list pointer. 61 | $$ Note that #CONTAINING_RECORD would also work 62 | 63 | r ${currProc} = ${listEntry} - ${ProcessLinksOffset} 64 | 65 | $$ Dump the ASCII 16 character name in the process 66 | 67 | da ${currProc} + ${ImageNameOffset} 68 | 69 | $$ Move on to the next entry. Our r? command makes sure 70 | $$ that ${listEntry} is typed appropriately 71 | 72 | r? ${listEntry} = @@c++(${listEntry}->Flink) 73 | 74 | } 75 | } 76 | 77 | $$ /v: suppresses the alias expansion 78 | 79 | ad ${/v:currProc} 80 | ad ${/v:listEntry} 81 | ad ${/v:ProcessLinksOffset} 82 | ad ${/v:ImageNameOffset} 83 | ad ${/v:PsActiveProcessHead} 84 | 85 | -------------------------------------------------------------------------------- /CommandPrograms/pscallbacks.wbs: -------------------------------------------------------------------------------- 1 | $$ 2 | $$ pscallbacks.wbs 3 | $$ 4 | $$ Walk the current list of image and process notification callbacks 5 | $$ 6 | $$ OSR Open Systems Resources, inc. 7 | $$ 8 | $$ http://www.osr.com 9 | $$ http://www.osronline.com 10 | $$ 11 | $$ 12 | $$ To run: 13 | $$ 14 | $$ $$>