oletools
oletools copied to clipboard
Avoid repeated string join()s in analyze_macros()
Change addressing #749
When an input file has on the order of ~100,000s of strings, analyze_macros()
becomes very slow. Let's change this behavior to instead store extracted strings in their own structure, and add them to the module source afterwards instead of incrementally.
Example with input file 4a87ee5ecd46a3fab735656b77d0e4fea8d3d72f3a6e0fb791999a2dfe8d59d2 (available on VirusTotal), using Python 3.9.10 on macOS:
Time performance without this patch: python3 ./oletools/olevba.py > /dev/null 929.50s user 1896.56s system 58% cpu 1:20:32.49 total
Time performance with this patch: python3 ./oletools/olevba.py > /dev/null 5.81s user 2.43s system 95% cpu 8.605 total