You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* analyze.py -- example usage: perform disassembly on a file or memory dump and optionally store results in JSON to a given output path.
13
50
14
51
The code should be fully compatible with Python 2 and 3.
15
52
Further explanation on the innerworkings follow in separate publications but will be referenced here.
16
53
17
-
To take full advantage of SMDA's capabilities, optionally install:
54
+
To take full advantage of SMDA's capabilities, make sure to (optionally) install:
18
55
* lief
19
56
* pdbparse (currently as fork from https://github.com/VPaulV/pdbparse to support Python3)
20
57
21
58
## Version History
22
59
23
-
* 2020-04-28: Several improvements, including: x64 jump table handling, better data flow handling for calls using registers and tailcalls, extended list of common prologues based on much more groundtruth data, extended padding instruction list for gap function discovery, adjusted weights in candidate priority score, filtering code areas based on section tables, using exported symbols as candidates, new function output metadata: confidence score based on instruction mnemonic histogram, PIC hash based on escaped binary instruction sequence
60
+
* 2020-04-29: v1.2.0 - Restructured config.py into smda/SmdaConfig.py to similfy usage and now available via PyPI! The smda/Disassembler.py now emits a report object (smda.common.SmdaReport) that allows direct (pythonic) interaction with the results - a JSON can still be easily generated by using toDict() on the report.
61
+
* 2020-04-28: v1.1.0 - Several improvements, including: x64 jump table handling, better data flow handling for calls using registers and tailcalls, extended list of common prologues based on much more groundtruth data, extended padding instruction list for gap function discovery, adjusted weights in candidate priority score, filtering code areas based on section tables, using exported symbols as candidates, new function output metadata: confidence score based on instruction mnemonic histogram, PIC hash based on escaped binary instruction sequence
24
62
* 2020-03-10: Various minor fixes and QoL improvements.
25
63
* 2019-08-20: IdaExporter is now handling failed instruction conversion via capstone properly.
26
64
* 2019-08-19: Minor fix for crashes caused by PDB parser.
27
-
* 2019-08-05: SMDA can now export reports from IDA Pro (requires capstone to be available for idapython).
65
+
* 2019-08-05: v1.0.3 - SMDA can now export reports from IDA Pro (requires capstone to be available for idapython).
28
66
* 2019-06-13: PDB symbols for functions are now resolved if given a PDB file using parameter "-d" (THX to @VPaulV).
29
67
* 2019-05-15: Fixed a bug in PE mapper where buffer would be shortened because of misinterpretation of section sizes.
30
-
* 2019-01-28: ELF symbols for functions are now resolved, if present in the file. Also "-m" parameter changed to "-p" to imply parsing instead of just mapping (THX: @VPaulV).
68
+
* 2019-02-14: v1.0.2 - ELF symbols for functions are now resolved, if present in the file. Also "-m" parameter changed to "-p" to imply parsing instead of just mapping (THX: @VPaulV).
31
69
* 2018-12-12: all gcc jump table styles are now parsed correctly.
32
70
* 2018-11-26: Better handling of multibyte NOPs, ELF loader now provides base addr.
33
71
* 2018-09-28: We now have functional PE/ELF loaders.
0 commit comments