This guide will walk you through your first analysis session with xAnalyzer. You’ll learn how to analyze code, interpret the results, and use the plugin’s core features.
Before starting, ensure you have installed xAnalyzer and verified it appears in the x64dbg Plugins menu.
Perform a comprehensive analysis of the entire executable:
Module analysis can take significant time and memory for large executables, especially with Extended Analysis enabled. Start with smaller files when learning.
1
Start module analysis
From the menu:
Plugins → xAnalyzer → Analyze Module
Or use the command:
xanal module
2
Monitor progress
A progress indicator shows the analysis status. You can continue working in x64dbg while analysis runs.
3
Review execution summary
When complete, check the Log tab for an execution summary showing:
For API calls, you’ll see detailed parameter information:
push 0 ; uType = MB_OKpush offset aErrorTitle ; lpCaption = "Error"push offset aErrorMessage ; lpText = "An error occurred"push 0 ; hWnd = NULLcall MessageBoxA ; MessageBoxA(hWnd, lpText, lpCaption, uType)```asmThe plugin automatically:- Identifies each parameter by name- Shows the parameter type- Resolves constant values to their symbolic names (e.g., `MB_OK`)- Provides the complete function signature### Loop DetectionxAnalyzer automatically identifies loops in your code:```asm.loop_start: ; Loop detected mov eax, [esi] test eax, eax jz .exit ; ... loop body ... jmp .loop_start ; Jump to loop start.exit:```asm<Note>Loop detection helps you quickly identify iterative structures, making control flow analysis easier.</Note>### Indirect Call ResolutionThe plugin can identify and comment indirect function calls:```asmmov eax, dword ptr [ebx+10h] ; Function pointercall eax ; Calling: SomeAPIFunction```asmSupported indirect call patterns:- `CALL {REGISTER}` - Register-based calls- `CALL {REGISTER + DISPLACEMENT}` - Offset-based calls- `CALL {DYNAMIC_POINTER}` - Memory pointer calls## Essential CommandsQuick reference for xAnalyzer commands:<CodeGroup>```bash Analysis Commandsxanal selection # Analyze selected instructionsxanal function # Analyze current functionxanal module # Analyze entire module```bash```bash Removal Commandsxanalremove selection # Remove analysis from selectionxanalremove function # Remove analysis from functionxanalremove module # Remove all analysis```bash```bash Helpxanal help # Display help in log window```bash</CodeGroup><Tip>You can set custom hotkeys for these commands in x64dbg's keyboard shortcuts settings. This makes analysis even faster during your workflow.</Tip>## Working with Analysis OptionsxAnalyzer's behavior can be customized through its options menu:<Steps> <Step title="Access options"> Navigate to:
Plugins → xAnalyzer → Options
</Step><Step title="Key options to know">- **Automatic Analysis**: Analyze automatically when debugger reaches entry point- **Extended Analysis**: Perform deep analysis of entire code section (slower but more thorough)- **Analyze Undefined Functions**: Include generic analysis for functions not in API definitions</Step></Steps>### Automatic AnalysisWhen enabled, xAnalyzer runs automatically at the entry point:<Check>**Best for:** Regular debugging sessions where you want immediate analysis</Check><Warning>Automatic analysis may add a few seconds to your load time, especially with large executables or Extended Analysis enabled.</Warning>### Extended AnalysisEnables comprehensive analysis of the entire code section:<Check>**Provides:**- Analysis beyond the main module- Detection of code in all sections- More thorough API call detection</Check><Warning>**Caution:** Extended analysis can consume significant memory and time for large executables. Use selectively for complex binaries.</Warning>### Analyze Undefined FunctionsWhen enabled, xAnalyzer provides generic analysis for:- Functions not in API definition files- Internal subroutines- Register/pointer-based calls```asmcall sub_401000 ; arg1, arg2, arg3, arg4
Notice how xAnalyzer transforms cryptic numeric values into meaningful constant names like GENERIC_READ and FILE_ATTRIBUTE_NORMAL, making the code’s intent immediately clear.
call CreateFileA ; Opening filescall ReadFile ; Reading datacall WriteFile ; Writing datacall CloseHandle ; Cleanup```asm### Registry Operations```asmcall RegOpenKeyExA ; Open registry keycall RegQueryValueExA ; Read registry valuecall RegSetValueExA ; Write registry value```asm### Memory Operations```asmcall VirtualAlloc ; Allocate memorycall VirtualProtect ; Change memory protectioncall VirtualFree ; Free memory```asm### Network Operations```asmcall WSAStartup ; Initialize Winsockcall socket ; Create socketcall connect ; Connect to remote hostcall send ; Send data```asm<Note>xAnalyzer's parameter information makes it easy to understand what these functions are doing - what files they're opening, what registry keys they're accessing, what memory regions they're modifying, etc.</Note>## Next StepsNow that you understand the basics:<CardGroup cols={2}> <Card title="Configuration Guide" icon="gear" href="/configuration/options"> Learn about all configuration options and how to customize xAnalyzer for your workflow </Card> <Card title="API Definition Files" icon="book" href="/api-definitions/overview"> Understand how to customize and extend the API definition system </Card> <Card title="Features" icon="wand-magic-sparkles" href="/features/api-analysis"> Explore API analysis, loop detection, and function tracking capabilities </Card> <Card title="Troubleshooting" icon="wrench" href="/advanced/troubleshooting"> Solutions for common issues and analysis limitations </Card></CardGroup>## Getting HelpIf you encounter issues or have questions:- Use `xanal help` command to see built-in help- Check the **Log** tab for error messages and hints- Review the [Known Issues](/advanced/limitations) section- Report bugs on [GitHub Issues](https://github.com/ThunderCls/xAnalyzer/issues)<Check>Congratulations! You've completed the quick start guide and are ready to use xAnalyzer effectively in your debugging workflow.</Check>