Commit Graph
396 Commits
Author SHA1 Message Date
Mike Auty eec68707bd Improve the vmware layer (not sure it's finished yet though). 2016-12-14 00:28:05 +00:00
Mike Auty 2c60747355 Minor fix, small but might as well fix it. 2016-12-14 00:27:41 +00:00
Mike Auty 2c02df125a Fix the truncation of strings
MHL kindly pointed out that the string wasn't truncating, and it turns
out I misread the struct documentation, which truncates or pads with
\x00s to ensure the appropriate length.  We now truncate to the first
null we find.
2016-12-13 20:41:09 +00:00
Mike Auty a32c7e27a9 Add in cryptic comments nearly lost during the vtypes purge. 2016-12-13 19:40:18 +00:00
Mike Auty 058346b74d Ensure IntermediateSymbols can handle cross-table references. 2016-12-13 19:32:22 +00:00
Mike Auty fa427d2a2b Add in the starts of a vmware layer and stacker. 2016-12-13 02:21:15 +00:00
Mike Auty ed716ca12a Convert SymbolTableInterfaces to descend from ConfigurableInterface
This allows SymbolTables to hold actual requirements (which
IntermedSymbolTable already did, but without pulling in the right
interface).  It means that values like kernel_virtual_offset get saved.

We still need to figure out how to allow plugins to demand optional
configuration values in other places (such as the kvo) but for now the
plugin will barf if it doesn't get it.
2016-12-12 02:08:32 +00:00
Mike Auty d43b294f36 Ensure we store all relevant config values rather than just those stores as variables. 2016-12-12 02:07:48 +00:00
Mike Auty eae84fd8e0 Ensure we only stack when needed
We shouldn't be stacking unless we're required, so now
we run after the construction phase, and run our own construction
phase is we've changed anything.
2016-12-12 02:06:54 +00:00
Mike Auty 046d1955b5 Ensure that only unfulfilled symbol requirements trigger the pdb scanner. 2016-12-12 02:04:20 +00:00
Mike Auty e2d5f51ad5 Remove old and rotten code. 2016-12-12 00:25:03 +00:00
Mike Auty 21c4e4bdef Refactor the segmented layer out of lime for use with other layers. 2016-12-11 19:13:35 +00:00
Mike Auty b9dbc80baf Improve logging of automagic actitivies. 2016-12-11 18:16:02 +00:00
Mike Auty 5d15f810e1 Tidy up the config namespace around automagic a little. 2016-12-11 13:58:17 +00:00
Mike Auty 9bb0745b83 Clean up the debug messages for pdbscanning. 2016-12-08 16:29:36 +00:00
Mike Auty 2aebb99ee6 Slightly improve the output and get rid of pointless parameters. 2016-12-08 16:24:59 +00:00
Mike Auty 8a0609e800 Add in a secondary scan to determine the kernel base in randomized kernel base systems. 2016-12-08 16:24:03 +00:00
Mike Auty 13b1126b90 Guard against no progress_callback in intel layer. 2016-12-08 16:03:22 +00:00
Mike Auty 482516d93d Rework the kvo finding code to allow for Win10 kernel base randomization. 2016-12-08 14:56:32 +00:00
Mike Auty 555f587b15 Ensure the progress value for translation layer scanning is correct. 2016-12-08 12:08:42 +00:00
Mike Auty 631ae07a26 Insert a check to use valid kernels where a pdb signature is found in multiple locations. 2016-12-08 11:55:46 +00:00
Mike Auty 183ff67699 Attach the kernel virtual offset to intel spaces. 2016-12-07 16:00:31 +00:00
Mike Auty 1f6fcd7bad Ensure that the value of pointers always fall within their layer. 2016-12-07 09:52:33 +00:00
Mike Auty 797e51608e Move the masking code into the data layer. 2016-12-07 09:50:59 +00:00
Mike Auty 6cb5d06d6d Ensure all offsets are normalized to fall within their layer's address range. 2016-12-07 00:07:57 +00:00
Mike Auty 20d0e83e1d Ensure we don't ever round down when log-ing. 2016-12-07 00:05:47 +00:00
Mike Auty 734b9a68b8 Ensure we use math.log correctly.
This is unlikely to ever happen (since we use python3)
but still just as well to implement in case something else
similar comes up.

https://www.willmcgugan.com/blog/tech/post/finding-the-first-bit-set-with-python/
2016-12-06 23:40:21 +00:00
Mike Auty 40694ff26c Add a note about precedence to the pdb loader. 2016-12-06 09:08:51 +00:00
Mike Auty a064c76628 Ensure we initialize kvo, change the filename format and give human readable feedback on the choice of natives. 2016-12-06 02:44:50 +00:00
Mike Auty 1c7de06bd0 Fix up issue with pointer sizes. Since cls is never used we're not losing information. 2016-12-06 02:44:11 +00:00
Mike Auty c52bf7cb6f Pull out the appropriate natives based on the intermediate format data. 2016-12-04 23:50:13 +00:00
Mike Auty 770a8ee42a Improve error handling to prevent endless recursion in template.__call__ 2016-12-04 11:17:48 +00:00
Mike Auty 05ae4aa64a Fix up offset for PAE. 2016-12-04 10:24:33 +00:00
Mike Auty d8b72cfc14 Add in checks and set the appropriate kernel location for all architectures. 2016-12-04 02:17:11 +00:00
Mike Auty a0f7c81128 Reveal the register size in intel spaces. 2016-12-04 02:14:54 +00:00
Mike Auty 4121895d4d Ensure the kernel virtual to physical offset mapping is correct. 2016-12-04 01:21:10 +00:00
Mike Auty e1cc55aeed Add in wchar to our set of bases for x64 systems. 2016-12-04 01:02:17 +00:00
Mike Auty e27a444068 Very minimally fix up the docstring for a function. 2016-12-04 01:01:46 +00:00
Mike Auty 88f1166c6d Add in a helper function that will likely be useful in the future. 2016-12-04 01:01:13 +00:00
Mike Auty 23fd704027 Add in the kernel offset recursion code. 2016-12-04 01:00:37 +00:00
Mike Auty 9a3402ccff Fix the incorrect signature offset returned. 2016-12-03 21:39:04 +00:00
Mike Auty e4e563ead0 Fix up the array slicing code. 2016-12-03 00:23:00 +00:00
Mike Auty 70815b0837 Shift the location of the pdbscan prefix/suffix values. 2016-12-02 21:44:23 +00:00
Mike Auty ed552d20e8 Add in support for lzma compressed json data. 2016-12-02 01:34:07 +00:00
Mike Auty c86f0ddef4 Add in a very rudimentary kernel PDB finding plugin that identifies and automatically loads the appropriate kernel for the image. 2016-11-27 23:40:19 +00:00
Mike Auty b2c3c76954 Don't forget the fixes that still need to happen. 2016-11-19 23:41:35 +00:00
Mike Auty 72259008f3 Use the physical layer and improve the output.
The physical layer will miss certain patterns, but is an order of
magnitude faster at scanning.  The main amount of time spent in scanning
Intel spaces is counting through every page in the address space (32, 40
or 64 bits), not the actual scanning.  There's no real way around this
if you want to ensure you get every chunk of virtual memory.  Since the
scanner could be stopped after its first hit, this might still be
preferable, but should not be the default (particularly for an automagic
scan).
2016-11-19 23:36:48 +00:00
Mike Auty d2fcc1d4b0 Add in optimization technique to reduce the number of pages that are scanned more than once. 2016-11-19 23:34:08 +00:00
Mike Auty c9abd290ec Remove an unnecessary test from the intel scan loop. 2016-11-19 18:05:41 +00:00
Mike Auty 38b1c61acc Remove debugging values from the pdb scanner. 2016-11-18 17:18:50 +00:00