Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - gs-attripathi/MemoryTool: High-performance memory manipulation tool for Windows - Cheat Engine alternative · GitHub
Skip to content

Repository files navigation

Memory Tool - Cheat Engine Alternative

A high-performance, terminal-based memory manipulation tool for Windows, similar to Cheat Engine. Built in C++ for maximum speed and efficiency.

Features

🎯 Process Attachment

  • Attach to processes by substring matching (e.g., "forza" matches "ForzaHorizon5.exe")
  • Automatic process selection with PID display
  • Full process memory access

🔍 Memory Value Search

  • Supported Data Types:

    • Byte (1 byte)
    • 2-Byte (short/word)
    • 4-Byte (int/dword)
    • Float (4 bytes)
    • Double (8 bytes)
    • String (null-terminated)
    • Pointer (memory address)
  • Fast Memory Scanning:

    • Optimized chunk-based reading (1MB chunks)
    • Multi-threaded scanning capability
    • Comprehensive memory region coverage

✏️ Value Modification

  • Python-style indexing:
    • Single index: 5 (modify 5th result)
    • Range: 10:20 (modify results 10-19)
    • Open ranges: :50 (first 50), 25: (from 25 to end)
  • Real-time memory writing
  • Batch modification support

🔗 Pointer Search

  • Advanced Pointer Path Discovery:

    • Configurable search depth (how many pointer levels)
    • Configurable offset range (max offset from base)
    • Static base resolution (DLL/EXE modules)
    • Interruptible searches (press 'q' to stop)
  • Pointer Path Format:

    • [[game.exe+0x544]+0x23]+0x32 (3-level pointer)
    • Human-readable explanations
    • Traceable from static addresses
  • Save/Resume Functionality:

    • Save pointer scans to timestamped files
    • Human-readable format with explanations
    • Resume capability for long searches

Building

Requirements

  • Windows 10/11
  • One of the following compilers:
    • Visual Studio Build Tools (recommended)
    • MinGW-w64

Method 1: Simple Build (Recommended)

# Run from Command Prompt or PowerShell
build_simple.bat

Method 2: CMake Build

# For advanced users
build.bat

Manual Compilation

# Visual Studio
cl /EHsc /O2 /MT memory_tool.cpp /link psapi.lib /out:MemoryTool.exe
# MinGW
g++ -std=c++17 -O3 -static memory_tool.cpp -lpsapi -o MemoryTool.exe

Usage

1. Launch and Attach

Enter process name substring: forza

The tool will find and attach to processes containing "forza" (like ForzaHorizon5.exe).

2. Search for Values

=== Main Menu ===
1. Search for value in memory

Example - Finding Health Value:

Select data type: 4 (4-Byte integer)
Enter value to search for: 100

Results Display:

Index | Address | Value
------|------------------|------------------
0 | 0x00007FF812345678 | 4-BYTE: 100 (0x64)
1 | 0x00007FF812346789 | 4-BYTE: 100 (0x64)

3. Modify Values

2. Modify found values
Enter index/range: 0 # Modify first result
Enter new value: 999

Advanced Indexing:

Enter index/range: 5:10 # Modify results 5-9
Enter index/range: :20 # Modify first 20 results
Enter index/range: 50: # Modify from result 50 to end

4. Pointer Search

3. Search for pointers to address
Enter target address: 0x12345678
Enter maximum offset: 1000
Enter maximum pointer depth: 5

Results:

Index | Pointer Path | Final Address
------|--------------|---------------
0 | [[game.exe+0x544]+0x23] | 0x12345678
1 | [[ntdll.dll+0x1000]+0x50]+0x10] | 0x12345678

How to Use Pointer Paths:

Example: game.exe+0x544+0x23
1. Get base address of game.exe
2. Add 0x544 to get intermediate address
3. Read pointer value at that address
4. Add 0x23 to get final address

Value Type Reference

Numeric Types

  • BYTE: 255 → displays as "BYTE: 255 (0xFF)"
  • 2-BYTE: 65535 → displays as "2-BYTE: 65535 (0xFFFF)"
  • 4-BYTE: 4294967295 → displays as "4-BYTE: 4294967295 (0xFFFFFFFF)"
  • FLOAT: 3.14159 → displays as "FLOAT: 3.141590"
  • DOUBLE: 3.141592653589793 → displays as "DOUBLE: 3.1415926536"

Special Types

  • STRING: "Hello World" → displays as "STRING: "Hello World""
  • POINTER: 0x12345678 → displays as "POINTER: 0x12345678"

Performance Tips

Memory Search Optimization

  • Use specific data types when possible
  • Start with unique values to reduce result count
  • Use string searches for text-based games

Pointer Search Optimization

  • Start with smaller offset ranges (100-500)
  • Use depth 3-5 for most games
  • Interrupt long searches and save progress
  • Filter results by examining saved files

File Outputs

Pointer Scan Files

Format: pointer_scan_ProcessName_Timestamp.txt

Example content:

Pointer Scan Results
Process: ForzaHorizon5.exe
Total paths found: 15
Path 0: [[ForzaHorizon5.exe+0x2A4C8B0]+0x18] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x18 to reach final address
Path 1: [[ForzaHorizon5.exe+0x2A4C8B0]+0x20]+0x8] -> 0x12345678
Explanation: Read pointer at ForzaHorizon5.exe + 0x2A4C8B0, then add 0x20, then add 0x8 to reach final address

Troubleshooting

Common Issues

"Failed to open process"

  • Run as Administrator
  • Ensure target process is running
  • Check if process has anti-cheat protection

"No processes found"

  • Check process name spelling
  • Ensure process is actually running
  • Try shorter substring (e.g., "forza" instead of "forzahorizon")

"Search too slow"

  • Use more specific data types
  • Search for unique values first
  • Close unnecessary applications

Performance Notes

  • The tool uses optimized memory scanning (1MB chunks)
  • Pointer searches can be CPU-intensive for deep levels
  • Save pointer scans frequently for long searches
  • Use interrupt feature ('q') to stop long operations

Security Considerations

  • Requires Administrator privileges for memory access
  • Only works on processes you have permission to access
  • Some games with anti-cheat may block memory access
  • Use responsibly and respect game terms of service

Technical Details

  • Written in C++ for maximum performance
  • Uses Windows API for direct memory access
  • Static linking for portable executable
  • No external dependencies required
  • Optimized for x64 Windows systems

About

High-performance memory manipulation tool for Windows - Cheat Engine alternative

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages