Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.3.0 #23

Draft
wants to merge 46 commits into
base: main
Choose a base branch
from
Draft

v0.3.0 #23

wants to merge 46 commits into from

Conversation

Speyedr
Copy link
Owner

@Speyedr Speyedr commented Mar 21, 2022

This is a roadmap to v0.2.0, listing the intended features and bugfixes that will be present in v0.2.0

This Draft will be converted to an actual PR once all the changes have been completed, at which point the project's main branch will be updated.

  • TODO: Add download link
  • TODO: Add video explaining, discussing, and demonstrating changes

Major Changes

  • Builds will now automatically request UAC permissions without needing to manually run the program as Administrator.

  • When the filter is turned ON, the program will now check if any other running processes have WinDivert loaded. If this is detected, the user will be warned that other programs using WinDivert may prevent SCBlocker from working properly.

    • Anti-Virus heuristics may flag this behaviour as suspicious as scanning all processes and retrieving their loaded modules may suggest that a program is searching for a specific process or function to target.
    • Processes that use WinDivert but are known to be compatible (such as DigitalArc's Guardian) will not trigger this warning.
    • Resolves [Bug] it does not work #10
  • Official releases are now personally signed by me using a Code Signing Certificate.

    • Thank you to those who donated, you helped fund the purchase of this certificate! 🥳
    • This was done to ensure confidence that re-uploaded / re-distributed versions of my releases have not been tampered with or modified.
    • Other (fairly simple) integrity checks have also been added, as well as changes to the build and releasing processes to discourage other forms of tampering outside the executable itself. Of course, a well-versed attacker will probably find a way.
    • This certificate is only a Code Signing Certificate, and not an EV (Extended Validation) Code Signing Certificate, as EV CSCs have much higher requirements, are more thoroughly vetted, are only available to organisations, cost at least 4 times as much as a standard CSC, and in my current situation, do not offer more in terms of features or abilities to be worth the additional cost.
  • The program now supports dynamically loading "translation files" from a directory relative to SCBlocker.exe.

    • These "translation files" allow cosmetic entries such as menu descriptions to be replaced with information localized for a specific language.
    • Translation files should not affect how the program actually operates.
    • More information about how to use (and create) translation files can be found here: [ ] TODO: Add video tutorial for translation files
    • Resolves [Feature Request] Add support for translation / changing display language #13

Minor / Cosmetic Changes

  • Updated cx-Freeze requirement to 6.10.x (to support auto-requesting UAC permissions)
    • My research found that this dependency update should not break support for any currently supported version of Windows or Python.
  • Added new external dependencies pygtrie and psutil for supporting WinDivert conflict detection
  • Added new external dependency pywin32 to support build stamping and versioning
  • The build script now acquires the version number from the VERSION variable in main.py (instead of being declared locally) to prevent divergence.
  • A utility script now exists to semi-automatically update and synchronize information across all translated README files.
    • It is currently not robust enough to trigger automatically, although it is intended that this will be the case at some later date.
  • New settings relating to the currently selected language are now stored in settings.ini.
  • Menu internals have changed slightly to support translations. Previously, the name of the menu entry was directly correlated to certain internal actions. Now, the name of the menu entry and the display name of the menu entry have been separated.
  • The sync_readme.py script now includes an auto-fix for a cosmetic issue with README files when using the # symbol followed by a number. Because of GitHub's Issue Notation, GitHub automatically adds unwanted URLs to text such as #1, which could be confusing to some people, as the links generated have no relevance to the content in the README.
  • SOURCE file is now present in builds to comply with this project's license. (GPLv3)
  • tkinter is now excluded from future builds as it is not required for this project.
  • Settings should be backwards compatible.
  • Fixed a typo in the README files which claimed that the settings file is settings.ini, when it's actually config.ini.
    • I somehow never noticed this until I started working on updating the Settings class.

Bugfixes

Notes

  • Pull requests for community translations are now open!
    • You can submit translations for the README file or the program itself.
    • You can either create an issue with the requested additions or fork the repository, add your translation and submit a Pull Request instead.
    • For more information, see [ ] TODO: Add video tutorial for translation files

Speyedr added 30 commits March 8, 2022 20:45
… an external library. Considering how many people are now using this project I don't think it's considerate to try and roll my own low-level version.
… also use WinDivert and therefore may conflict with SCBlocker.
…rsion from main instead of the other way round. This way, cx_Freeze is not required to run the program directly (because really it shouldn't be necessary to have a build tool if you're not building...)
…nslation is missing (instead of just throwing an exception and risking crashing the program).
Seems to be performing far slower than expected. Could be the print messages bottlenecking but the regex might also be the problem.
…t permissions (even though under normal circumstances this program should have Administrator permissions).
…linking to non-relevant issues when using the pound symbol `#` followed by a number.

Also remembered to add the Dutch translation to the list of readme files that can be updated.

Also re-ran the script to apply the pound-number-fix.
Fixed certain path inconsistencies, added uac-admin flag.
Need to think of a way to use the async logger to lighten the load.
…done to automatically adjust the filter settings or warn the user if this occurs.
…t host "safely" needed to be refactored a bit.
…o be both pushed to async logger

In the future there should be defined "processing methods" for different types
…orse*), going to have to go back to the drawing board for this.

I've noticed a couple of things which are redundant, such as:
- There is no real "need" to have the process names on the initial scan. Only the Process IDs are necessary.
 - So, simply return the process IDs and just use that initially.
- Apparently, checking if a process exists is faster than attempting to construct the Process object?
 - So, check if processes still exist before attempting to open them.
  - Alternatively, we embed process_iter() usage inside of construct_module_trie() to prevent any sort of race conditions.
Speyedr added 4 commits March 28, 2022 15:45
…even when only querying limited information?
…the very least, this seems promising: The entire function from start to finish is almost 4x as fast!

Just looking at it now, there's still several parts I can optimise out here. (Hopefully I don't need to roll my own PrefixTrie as well...)
…), I only need PROCESS_QUERY_LIMITED_INFORMATION for GetModuleFileNameExA.

Funnily enough, I'd need PROCESS_QUERY_INFORMATION *and* PROCESS_VM_READ to call GetModuleFileNameExW, instead of just the single limited query info for the ANSI version. Very weird...
@Speyedr Speyedr added the roadmap Currently under development label Mar 31, 2022
@Speyedr Speyedr changed the title v0.2.0 v0.3.0 Mar 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
roadmap Currently under development
Projects
None yet
1 participant