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

feat: procmon library to monitor system calls #281

Open
wants to merge 22 commits into
base: development
Choose a base branch
from

Commits on Jan 28, 2024

  1. chore: Apply code formatting

    icex2 committed Jan 28, 2024
    Configuration menu
    Copy the full SHA
    431a7b8 View commit details
    Browse the repository at this point in the history
  2. feat(util): Add log function for logging in exception handlers

    We want this to always be visible, so the log level must be
    the highest possible. Unfortunately, that's quite the hack
    around the existing API and how fatal behaves.
    
    The log API stopped scaling already a while ago and needs
    considerable refactoring to consider the various use-cases
    that emerged since it was first created on alpha versions
    of bemanitools.
    icex2 committed Jan 28, 2024
    Configuration menu
    Copy the full SHA
    4c9ed32 View commit details
    Browse the repository at this point in the history
  3. feat(util): Separate debug module with proper stacktrace printing

    Because we are using mingw, we can't just use window's
    dbghelp library as the symbols created are in dwarf format.
    
    Fortunately, the dwarfstack library already provides all the
    facilities to easily print very descriptive stacktraces,
    including function names, file names and line numbers,
    when dwarf symbols are available.
    
    This moves the incomplete exception handling portion from
    signal to a separate module as well to improve scoping.
    icex2 committed Jan 28, 2024
    Configuration menu
    Copy the full SHA
    a70f7c6 View commit details
    Browse the repository at this point in the history

Commits on Jan 29, 2024

  1. feat(inject): Use new exception handler with stacktraces

    Adjust inject to utilize the new feature. This also
    requires including the dwarfstack.dll in all distribution
    packages.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    e1bccc4 View commit details
    Browse the repository at this point in the history
  2. fix(make): Include dwarf symbols and remove stripping

    Expecting to improve debugability significantly. Stacktraces
    can be enhanced with function names, file names and line
    numbers when symbols are included in all exe and dll files.
    
    Furthermore, this also improves debugger usage as symbols
    can be imported to help navigate disassembly/decompiled code.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    fbbe956 View commit details
    Browse the repository at this point in the history
  3. feat(util): Add func to check if running as admin user

    This has been a source of common error in the past.
    It is known that most, or even all, games run into
    various issues when not run with elevated privileges.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    0eda352 View commit details
    Browse the repository at this point in the history
  4. feat: Add new module to scope avs related "utility" stuff

    Use this to share helpers or other extensions to the
    original avs API across modules.
    
    Start with including error codes to readable strings
    to improve velocity on AVS API error analysis.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    c20fbbd View commit details
    Browse the repository at this point in the history
  5. feat(avs-api): Improve property_type enum

    Taken from a private eamuse server backend which
    had more complete mappings.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    201d3d2 View commit details
    Browse the repository at this point in the history
  6. chore(avs-api): Move psmap terminator to enum

    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    4ac0ac5 View commit details
    Browse the repository at this point in the history
  7. feat(avs-api): Introduce AVS error type

    Supports improving expressiveness of the API interface
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    ed21aa2 View commit details
    Browse the repository at this point in the history
  8. feat(avs-api): Add more AVS file system related functions

    These were previously missing and are required for
    various file system related tasks such as iterating
    directory trees, reading and writing files through
    the AVS file system for the upcoming launcher
    rework.
    
    Note that the AVS API broke with some mode flags
    after version 2.13.06.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    ffaeb79 View commit details
    Browse the repository at this point in the history
  9. feat(avs-api): Add more property node related functions

    Again, required for the launcher rework when dealing
    with property node trees.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    9f5bb81 View commit details
    Browse the repository at this point in the history
  10. fix(avs-api): Variable type and naming

    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    bc743df View commit details
    Browse the repository at this point in the history
  11. feat(avs imports): Add lib export definitions of new AVS API functions

    Add all functions and their respective ordinals (and mangled names for
    documentation purpose) to all currently used AVS version.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    e2b4113 View commit details
    Browse the repository at this point in the history
  12. feat/fix(avs/ddr): Support AVS 2.13.06

    This one was missing and is the actual correct
    version used for ddr-13. 2.13.04 was compatible,
    thus far, but there isn't any guarantee that they
    are actually 100% compatible (only konmai knows...).
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    fe05817 View commit details
    Browse the repository at this point in the history
  13. fix(dist): Incorrect versioning for ddr distribution packages

    Apparently forgotten to get updated to reflect the
    currently supported versions correctly.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    1d6dfbb View commit details
    Browse the repository at this point in the history
  14. fix(doc): Update list of supported ddr versions

    Apparently also forgotten to reflect currently
    supported games.
    icex2 committed Jan 29, 2024
    Configuration menu
    Copy the full SHA
    5330802 View commit details
    Browse the repository at this point in the history

Commits on Feb 3, 2024

  1. refactor(launcher): Major re-work of launcher

    Kudos to Shiz for providing the groundwork for this.
    
    Fundamentally re-think how launcher operates and
    bootstrapping the games is managed and configured.
    
    This brings it significantly closer to how the original
    bootstrap is doing the job: launcher now utilizes the
    data (structures) provided by the bootstrap.xml configuration
    file. This creates compatibility with vanilla data dumps
    and original stock images. Note that bemanitools does not
    include any code or means to run DRM'd data, only decrypted.
    
    But, this allows users to keep decrypted dumps as stock as
    possible which means:
    
    * No copying around of property files anymore
    * Keep the modules/ folder with the binaries
    * Have bemanitools binaries separate in the data
    * No need to edit/customize the original configuration files
    
    A list of key features of the "new" launcher:
    
    * Boostrap games by following the configuration provided by
      stock game's bootstrap.xml files
    * Custom launcher.xml configuration file that adds further
      launcher configurable features, composability of
      bootstrap.xml configuration(s) as well as configuration
      overriding/stacking of selected types of configurations,
      e.g. eamuse config, avs-config. The latter eliminates
      the need for modifying stock config files in the prop/
      folder
    * Unified logging system: launcher and AVS logging uses
      the same logger, all output can now be in a single file
    * Original features such as various hook types still
      available
    
    Due to the significant architectural changes, this also
    breaks with any backwards compatibility to existing
    launcher setups. Thus, users need to migrate by re-applying
    the new configuration format and migrating their config
    parameters accordingly.
    
    Further migration instructions and updated documentation
    will be provided upon release.
    
    Co-authored-by: Shiz <[email protected]>
    icex2 and shizmob committed Feb 3, 2024
    Configuration menu
    Copy the full SHA
    24e7dd5 View commit details
    Browse the repository at this point in the history
  2. refactor(dist): Config and .bat files

    Move everything to new launcher.xml configuration
    files. Adjust the bootstrapping of launcher in the
    .bat files. Features such as copying the default
    props/ files to nvram are now handled by launcher.
    
    Using the PATH variable, bemanitools binaries can
    live in their own dedicated bemanitools/ subfolder
    next to props/ and modules/ now. All original
    binaries are expected to be kept in a modules/
    folder like on stock data.
    icex2 committed Feb 3, 2024
    Configuration menu
    Copy the full SHA
    a237454 View commit details
    Browse the repository at this point in the history
  3. fix(hook): Add missing hook_table_revert impl

    icex2 committed Feb 3, 2024
    Configuration menu
    Copy the full SHA
    d95633c View commit details
    Browse the repository at this point in the history
  4. feat(procmon): Library to hook and monitor selected system calls

    A general debugging tool. 3rd party applications such as
    "procmon" (same name) provide these capabilites and even
    more. But, they are more difficult to run with bemanitools
    and don't provide a unified look at the output in combination
    with the log output by bemanitools.
    
    Provide an initial set of system call hooks that have already
    supported debugging efforts. More can be added when needed
    later.
    icex2 committed Feb 3, 2024
    Configuration menu
    Copy the full SHA
    d42b426 View commit details
    Browse the repository at this point in the history
  5. feat(launcher): Integrate procmon as optional dependency

    Integrate this as an optional dependency into launcher and
    load it dynamically. Thus, these can be easily loaded/enabled
    by developers and end-users.
    icex2 committed Feb 3, 2024
    Configuration menu
    Copy the full SHA
    017caab View commit details
    Browse the repository at this point in the history