CYB3RMX / Qu1cksc0pe

All-in-One malware analysis tool.
GNU General Public License v3.0
1.24k stars 176 forks source link

I'd like to start contributing regularly, are you open to that? #52

Closed luis261 closed 4 months ago

luis261 commented 4 months ago

Already left you a few PRs, just to demo the kinds of things I'd start off my work with. Just let me know what you think of them once you have time to review. If you prefer doing things "your way" and don't want the additional contributions, just let me know, no hard feelings, that's why I started off with very small changes instead of directly jumping into the deep end.

[!NOTE] I've also pasted this as an addendum to #51, didn't know what the best place for it would be really? Feel free to close this issue obviously.

Hey @CYB3RMX,

I appreciate your work on this project. I like what I'm seeing in terms of actual functionality, quite a holistic set of analysis features/file scanning capabilities you've built up here over the years! We use it at my org (as part of a set of lots of other, diverse analysis tooling) and I'd like to personally give back a bit by contributing in my spare time.

Think of the changes in this PR (and the ones I've already submitted, as well as further ones I might sent through the course of tonight) as just a small sample representing the kinds of changes I'd like to apply.

I'm a bit nitpicky when it comes to (Python) code and would also like to take care of typos as well as moving the codebase towards PEP 8 compliance (I'm not a complete stickler when it comes to PEP8 in particular, but let's at least get the simpler things right, such as moving variable and module names from inconsistent naming schemes/camelCase towards snake_case). However, since you're ultimately in charge here, if you tell me that I should ignore that kinda stuff upfront, I am happy to respect that and will try to let it go ^^

I hope you're open to me proposing changes, as I feel like your project could benefit from them (see below). If you are on board with me trying to improve this project, I have a lot more on my mind, e.g.:

Quality:

Usability:

Extensions (I work as a Security Analyst at my day job so I might have some stuff to offer when it comes to the analysis-specific parts of the code):

Performance:

I know the plan might seem overly ambitious/big but I'll take it slow in small steps, can't commit to working on this every single weekend but I do have some time I'd like to invest here and I really think I can achieve at least a good portion of the goals listed above given some time over the coming months and a bit of support in terms of reviews from your side.

Looking forward to working with you (: Obviously no need to rush any reviews, nothing of this is particularly urgent and I'll adjust to your pace

luis261 commented 4 months ago

I just finished configuring some more branches for https://github.com/luis261/Qu1cksc0pe, I'll leave this here as a more concrete, albeit high level "plan", mostly as a note for myself:

(more or less sorted by the order I'll run through em):

  1. code-dedup: simple code deduplication
  2. refactoring: general place for stuff a bit more involved than above, some of this will fall more under "rearchitecting" I guess, at least from an in-project POV
  3. user-facing: mainly better I/O handling, e.g. how we handle tmp files, reading secrets etc .. will also want to improve error messages, use warnings instead of "raw" prints to stdout and so on, maybe I'll also sneak in a cute new animation or sth
  4. error-handling: changes specifically related to better error handling (as in: fail early, fail gracefully, be less permissive in some cases)
  5. sys-comms: make use of more specific Python lib functions over just widly firing off subprocesses/shells
  6. automated-testing (def unit tests for some analyzers, maybe also a rough integration test? .. doubt I'll setup CI/CD for this one .. but just having tests would be nice, even if they have to be kicked off "by hand")
  7. analyzers (will probably take me a while until I actually arrive at the point to contribute to these "load-bearing" constructs, but I'm sure by the time I've made it this far through the list I should be comfortable, especially if I've written tests for em)
  8. perf
CYB3RMX commented 4 months ago

Hello @luis261 !

Thank you for your interest about Qu1cksc0pe project. Of course we can work together. I am open to whoever wants to improve Qu1cksc0pe project :) . I will check your pull requests on couple of days. I also needed someone who helps me to improve the analyzers these days :)

luis261 commented 4 months ago

@CYB3RMX love to hear it! Sure, take your time, looking forward to what you have to say to the changes

Totally, working on meaningful contributions to the analyzers is what I ultimately want to do. It's gonna take me a while to ramp up though and I'd like to spend that time improving all kinds of other things in the codebase (as detailed above). I think that approach might lead to some synergies once I move onto the analyzers (:

Sorry for the late reply btw, I had something unexpected come in last night that drew my attention for a while there. I'm usually better when it comes to response times for projects that I care about on this platform

luis261 commented 4 months ago

I'll close this issue now since it's served its purpose 🤗