oletools icon indicating copy to clipboard operation
oletools copied to clipboard

Avoid repeated string join()s in analyze_macros()

Open Blacksyke opened this issue 2 years ago • 0 comments

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

Blacksyke avatar Mar 01 '22 21:03 Blacksyke