Debugger version
Operating system version and Service Pack (including 32 or 64 bits).
Brief description of the issue.
Scylla x86 plugin crashed running specific executable.
Elaborate reproduction steps for the bug/issue being reported.
By the way, if i open Scylla window in advance and load it afterwards, after choosing the process to attach, it will crash as well.
Scylla for some reason can't enumerate the APIs of one of the loaded modules from memory (i would blame it on lib.dll provided in the zip file), setting Scylla to read APIs from disk will workaround this issue.
Before debugging the application open Scylla -> Misc -> Options -> tick the option Read APIs always from disk (slower!)
or edit Scylla.ini and change the following parameter:
APIS_ALWAYS_FROM_DISK=1
To prove that lib.dll is the reason:
System Breakpoint is selected in the debugger optionsRead APIs always from disk (slower!) is not selected in Scylla optionsx32dbg.exe -> press F3 and select lib.dllSymbols tab, and you'll notice that lib.dll is not loaded yetScylla and it won't crashF9) to reach the entrypoint of the dll (so that it's loaded),Scylla and it'll crashRepeat those steps again but select/mark Read APIs always from disk (slower!) in Scylla options and no crashes will occur.
It works! Thanks, @wk-952 for your solution and timely reply. I'll change the issue title for others who are also searching for a solution. I guess it's because of that lib.dll as well, because crash happened right after Scylla shows it loaded lib.dll in its log window, and later I found lib.dll is protected by VMProtect. btw, is this a fixable bug?
Adding more info to this issue:
Scylla fails here: ApiReader.cpp#L59, the function ApiReader::isModuleLoadedInOwnProcess() should return true but in this case it's returning false.
The reason is that lib.dll is not registered/stored in the std::vector ProcessAccessHelp::ownModuleList which seems to be only manipulated here: Scylla.cpp by ProcessAccessHelp::getProcessModules().
Hope these info help in resolving the issue.
Most helpful comment
Scyllafor some reason can't enumerate the APIs of one of the loaded modules from memory (i would blame it onlib.dllprovided in the zip file), settingScyllato read APIs from disk will workaround this issue.Before debugging the application open
Scylla->Misc->Options-> tick the optionRead APIs always from disk (slower!)or edit
Scylla.iniand change the following parameter:APIS_ALWAYS_FROM_DISK=1To prove that
lib.dllis the reason:System Breakpointis selected in the debugger optionsRead APIs always from disk (slower!)is not selected inScyllaoptionsx32dbg.exe-> pressF3and selectlib.dllWhen you land at the system breakpoint go to the
Symbolstab, and you'll notice thatlib.dllis not loaded yetScyllaand it won't crashF9) to reach the entrypoint of the dll (so that it's loaded),then try to open
Scyllaand it'll crashRepeat those steps again but select/mark
Read APIs always from disk (slower!)inScyllaoptions and no crashes will occur.