Commit Graph
92 Commits
Author SHA1 Message Date
Mike Auty de8508a8bb Reset the maxvirtaddr to use maxphyaddr just so we don't forget. 2017-05-01 14:35:22 +01:00
Mike Auty e182e44815 Remove all hardcoded PAGE_SIZE variables, and expose more Intel variables. 2017-04-30 22:09:26 +01:00
Mike Auty 687da20cbc Fix up a typo @npetroni pointed out. 2017-04-20 23:11:42 +01:00
Mike Auty d6728fc2b4 Add in attributes and appropriate validation of TranslationLayers based on those attributes. 2017-02-10 13:57:44 +00:00
Mike Auty 1437e24b53 Add a note about _maxphyaddr. 2017-01-02 22:17:35 +00:00
Mike Auty 3aec66333e Allow the vmware stacker to ask the FileLayer it's on top of what filename it had. 2016-12-29 15:10:21 +00:00
Mike Auty bab71d4358 Refactor the progress_callback so it can be used in automagics.
Refactored the location of the progress_callback so that the UI can
specify it and ensure it is used by the automagics process as well as
the plugins themselves.

The progress_callback function has also had an optional description parameter
added, so that it can differentiated in case two scans happen
simultaneously.
2016-12-26 23:45:47 +00:00
Mike Auty b54cb86c89 Allow automagics to use natives without a set of global natives.
This allows NativeSymbolTables to be appended to symbol_spaces and
uses this to let automagic modules (which have no existing symbol table
to rely on) to load natives for reading format data.
2016-12-26 22:49:51 +00:00
Mike Auty 943c625d5a Ensure VMware fails back to flat with zero region metadata files. 2016-12-26 22:48:29 +00:00
Mike Auty a4f27e73f4 Refactor the scanners to allow multithreaded searching. 2016-12-25 17:01:05 +00:00
Mike Auty 1c85db0c31 Add in multi-processing on TranslationLayer scan method. 2016-12-25 13:45:08 +00:00
Mike Auty 60bf657895 Allow pickling of FileLayers by unsetting the file (it'll be reopened as soon as a read happens). 2016-12-25 00:02:42 +00:00
Mike Auty aad6aa9b4d Rewrite the intel scanning engine (and fix up the internal _translate function to include the mapped layer). 2016-12-21 16:53:52 +00:00
Mike Auty cad0cf2d4f Improve vmware segment calculations. 2016-12-14 01:31:22 +00:00
Mike Auty eec68707bd Improve the vmware layer (not sure it's finished yet though). 2016-12-14 00:28:05 +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 21c4e4bdef Refactor the segmented layer out of lime for use with other layers. 2016-12-11 19:13:35 +00:00
Mike Auty 13b1126b90 Guard against no progress_callback in intel layer. 2016-12-08 16:03:22 +00:00
Mike Auty 183ff67699 Attach the kernel virtual offset to intel spaces. 2016-12-07 16:00:31 +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 a0f7c81128 Reveal the register size in intel spaces. 2016-12-04 02:14:54 +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 f707c0c4e9 Add in first shot at an 'efficient' virtual memory scanner. Uses page misses to calculate skipping distances. 2016-11-18 17:14:48 +00:00
Mike Auty 096e2f4610 Make the paged exceptions more useful at knowing how big an area is unavailable. 2016-11-18 11:40:48 +00:00
Mike Auty 667014a1fd Attempt to standardize error message display. 2016-10-30 17:51:45 +00:00
Mike Auty 824ad5b143 Add in the LimeStacker, and fix the lack of appropriate information on LimeLayer creation. 2016-08-26 08:35:09 +01:00
Mike Auty 37dcbb88b0 Rework lime to use the new layer constructor, and factor out the header check. 2016-08-26 08:30:22 +01:00
Mike Auty 3dc161f9b4 Rework Translation Layers to tie more closely to configurations
This change is quite signficant, and requires that TranslationLayers
get all additional parameters that they need through their requirements.

These are now automatically enumerated and populated on object
construction based on the requirements, so should not require lots of
repetitive filling out of fields.

It does come with the downside that TranslationLayers can only be
contructed with a context (and appropiate config), but TLs in particular
always require a context (to contain the base layer) and blank configs
can be constructed relatively easily (convenience functions can be added
if necessary).

This allows configuration trees to be built up, and their configs
spliced into an existing config (as if it were being loaded from a
file).

Not all ConstructableRequirements use this method, since SymbolTables
(for example) do not have access to the context or config_path in order
to get to any parameters stored in the context's config.  They therefore
are still passed their requirement values as __init__ parameters
instead.
2016-08-22 02:20:10 +01:00
Mike Auty d3e63fbc1a Rename update_configuration to build_configuration and return a standalone config. 2016-08-22 02:18:23 +01:00
Mike Auty e54505701f Refactor Memory into an interface. 2016-08-21 21:26:21 +01:00
Mike Auty 462295fc4b Ensure lime is properly imported, so that its classes get picked up by the plugin system. 2016-08-16 10:55:27 +01:00
Mike Auty ca61cf10b9 Refactor the context back into the ConfigurableInterface.
This also adds support for manually constructed configurables to
populate the config tree in the current context.

I'm still toying around with this though, I need to figure out
what to do with optional values and think the whole thing through
to make sure it's worthwhile.
2016-08-14 21:28:43 +01:00
Mike Auty 8089a03f81 Convert the private file attribute to a property to allow for cloning. 2016-08-14 01:09:36 +01:00
Mike Auty e02feed16e Python 3 has a sane super() implementation (no arguments), so convert to using that. 2016-08-14 00:55:02 +01:00
Mike Auty 43aba96e3f Minor pylint (alphabetical imports) and refactoring the construct class to work for symbols. 2016-07-30 01:58:29 +01:00
Mike Auty d3a226d7a8 Remove constraints as a thing, they'll need to come back, but in a different form. 2016-07-30 01:52:44 +01:00
Mike Auty b63f07f493 Rework the imports to make the intel layers easier to read. 2016-07-29 02:57:10 +01:00
Mike Auty bb2dd859d5 Refactor the get_schema call to make more sense. 2016-07-29 02:56:20 +01:00
Mike Auty be54ea0dda Fix minor docstring typo. 2016-07-02 16:24:17 +01:00
Mike Auty 90fa5574b4 Add in the initial scanning framework. 2016-07-02 15:49:00 +01:00
Mike Auty c626bebb59 Convert mapping to a generator rather than a list. It must still return in sorted order. 2016-07-02 15:48:09 +01:00
Mike Auty fc34850345 Implement mapping with ignore_errors to get a (sorted) list of valid chunks in a layer. 2016-07-02 15:39:36 +01:00
Mike Auty 98fff4616c Add in linted spacing by pycharm. 2016-07-02 14:55:52 +01:00
Mike Auty 5290baf73d Make InvalidAddress exceptions more useful. 2016-07-02 13:31:36 +01:00
Nick L. Petroni, Jr 02f26e7829 lime.py: improve check -- empty lists evaluate to False 2016-05-26 17:39:54 -04:00
Nick L. Petroni, Jr 2686487e6f lime.py: first working version
- moved segment loading out of __init__(), now happens on first use
- fixed mapping() to return the correct chunk_size
- self._base_layer is a string, not a layer
2016-05-26 17:39:54 -04:00
Nick L. Petroni, Jr f9a950bb39 added LIME translation layer 2016-05-26 17:39:54 -04:00
Mike Auty 633225edb2 Minor reformatting by pycharm for line length. 2016-05-26 09:14:37 +01:00