Skip to content

vykt/scancry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScanCry

ABOUT:

libscanmem is the only project that implements comprehensive memory scanning on Linux. It suffers from a number of problems:

  • It naively reads procfs mappings into a flat vector of vm_area structures. This makes it difficult to reason about objects rather than areas.
  • Changes in the target's memory mappings invalidate all area pointers. Keeping track of individual areas is O(n^2), objects likely even worse.
  • It naively opens file descriptors on the target.
  • It naively attaches through ptrace, stopping the target in the process. This is particularly egregious.

ScanCry addresses all of these problems:

  • Target memory mappings are organised into objects with corresponding areas using the MemCry library. No pointer invalidation occurs on update.
  • Scans are performed through virtual hotswappable interfaces provided by MemCry. Switching scans from using procfs to using a kernel driver is trivial.
  • ScanCry is fundamentally built to avoid anticheat.

Besides addressing libscanmem's shortcomings, ScanCry's core comes with new features:

  • All scans are performed through a single scanning core that manages multithreading for you. Scan types only define a callback to process a single scanned address.
  • Sophisticated filtering of the scan surface is made possible with constraints, which can be combined. Examples of constraints include:
    • Omit or exclusively scan given areas and objects.
    • Only scan areas with given access permissions (e.g.: rw-)
  • A pointer scanner is implemented as a scan type, with support for extensive configuration for all scenarios.
  • C bindings are provided; you can use ScanCry with your favourite language.

ScanCry is still in development. Currently only the pointer scanner is implemented. Soon, a value scan and pattern scan will follow. Commandline utilities will soon be written too.

DEPENDENCIES:

If you're not using a packaged release, you'll need to install:

  • CMore - Data structures for C.
  • MemCry - Memory manipulation library.

EXAMPLE:

WIP.

About

Memory scanning library for Linux.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published