mirror of
https://github.com/NohamR/Reclass.git
synced 2026-05-10 19:59:21 +00:00
feat: symbol double-click navigation, tree icons, and module.dll address parsing
- Double-click symbol in Symbols tab navigates to moduleBase + RVA - Add symbol-method.svg icon for function symbols, symbol-structure.svg for modules - Force-populate all modules on search so filter works without expanding first - Parse module.dll/exe/sys as identifiers in address bar (e.g. client.dll + 0xFF)
This commit is contained in:
@@ -31,6 +31,7 @@ namespace rcx {
|
|||||||
//
|
//
|
||||||
// All numeric literals are hexadecimal (base 16).
|
// All numeric literals are hexadecimal (base 16).
|
||||||
// Identifiers: [a-zA-Z_][a-zA-Z0-9_]* containing at least one non-hex char.
|
// Identifiers: [a-zA-Z_][a-zA-Z0-9_]* containing at least one non-hex char.
|
||||||
|
// Module names with extensions (e.g. "client.dll") are scanned as one token.
|
||||||
// Pure hex-digit words (e.g. "DEAD") are treated as hex literals.
|
// Pure hex-digit words (e.g. "DEAD") are treated as hex literals.
|
||||||
|
|
||||||
class ExpressionParser {
|
class ExpressionParser {
|
||||||
@@ -285,6 +286,20 @@ private:
|
|||||||
hasNonHex = true;
|
hasNonHex = true;
|
||||||
advance();
|
advance();
|
||||||
}
|
}
|
||||||
|
// Handle module.dll / module.exe / module.sys extensions
|
||||||
|
// e.g. "client.dll + 0xFF" should parse "client.dll" as one token
|
||||||
|
if (!atEnd() && peek() == '.' && m_pos > start) {
|
||||||
|
int dotPos = m_pos;
|
||||||
|
advance(); // skip '.'
|
||||||
|
int extStart = m_pos;
|
||||||
|
while (!atEnd() && isIdentChar(peek()))
|
||||||
|
advance();
|
||||||
|
if (m_pos > extStart) {
|
||||||
|
hasNonHex = true; // '.' makes it definitively an identifier
|
||||||
|
} else {
|
||||||
|
m_pos = dotPos; // backtrack — '.' at end isn't an extension
|
||||||
|
}
|
||||||
|
}
|
||||||
// If we hit '!' and the next char is an identifier start, extend the token
|
// If we hit '!' and the next char is an identifier start, extend the token
|
||||||
// to include the second part (WinDbg module!symbol syntax)
|
// to include the second part (WinDbg module!symbol syntax)
|
||||||
if (!atEnd() && peek() == '!' && m_pos > start) {
|
if (!atEnd() && peek() == '!' && m_pos > start) {
|
||||||
|
|||||||
Reference in New Issue
Block a user