I am trying to use the SRDI_CLEARMEMORY flag, but I am having a couple of issues. First, if I try running the shellcode generated using the PIC code of ShellcodeRDI.c I don't get any call to VirtualFree and it seems that there is no visible effect on the allocated memory.
After reading the ShellcodeRDI.c, the code responsible for the memory cleaning looks like is the following:
if (flags & SRDI_CLEARMEMORY && pVirtualFree && pLocalFree) {
if (!pVirtualFree((LPVOID)dllData, 0, 0x00008000))
{
pLocalFree((LPVOID)dllData);
}
}
However, it looks to me that pVirtualFree and pLocalFree are initialised but no value is assigned to them?
I tried modifying the code myself and added the following at line ~ 260 of ShellcodeRDI.c:
BYTE sLocalFree[] = { 'L', 'o', 'c', 'a', 'l', 'F', 'r', 'e', 'e' };
BYTE sVirtualFree[] = { 'V', 'i', 'r', 't', 'u', 'a', 'l', 'F', 'r', 'e', 'e' };
FILL_STRING_WITH_BUF(aString, sLocalFree);
pLdrGetProcAddress(library, &aString, 0, (PVOID*)&pLocalFree);
FILL_STRING_WITH_BUF(aString, sVirtualFree);
pLdrGetProcAddress(library, &aString, 0, (PVOID*)&pVirtualFree);
Now, if I debug the program with something like x64dbg, I can see the invocation to VirtualFree but the following error is returned:

LocalFree fails as well with this:

The program I used to inject the sRDI shellcode is the DotNet loader in the main repository, where the ConvertToShellcode function is called with the 0x2 flag.
Am I doing something wrong here (except for spending my Sunday reading C code)?
I am trying to use the SRDI_CLEARMEMORY flag, but I am having a couple of issues. First, if I try running the shellcode generated using the PIC code of
ShellcodeRDI.cI don't get any call toVirtualFreeand it seems that there is no visible effect on the allocated memory.After reading the
ShellcodeRDI.c, the code responsible for the memory cleaning looks like is the following:However, it looks to me that
pVirtualFreeandpLocalFreeare initialised but no value is assigned to them?I tried modifying the code myself and added the following at line ~ 260 of
ShellcodeRDI.c:Now, if I debug the program with something like x64dbg, I can see the invocation to VirtualFree but the following error is returned:
LocalFreefails as well with this:The program I used to inject the sRDI shellcode is the DotNet loader in the main repository, where the
ConvertToShellcodefunction is called with the0x2flag.Am I doing something wrong here (except for spending my Sunday reading C code)?