- In the extension bar, click the AdBlock Plus icon
- Click the large blue toggle for this website
- Click refresh
- In the extension bar, click the AdBlock icon
- Under "Pause on this site" click "Always"
- In the extension bar, click on the Adguard icon
- Click on the large green toggle for this website
- In the extension bar, click on the Ad Remover icon
- Click "Disable on This Website"
- In the extension bar, click on the orange lion icon
- Click the toggle on the top right, shifting from "Up" to "Down"
- In the extension bar, click on the Ghostery icon
- Click the "Anti-Tracking" shield so it says "Off"
- Click the "Ad-Blocking" stop sign so it says "Off"
- Refresh the page
- In the extension bar, click on the uBlock Origin icon
- Click on the big, blue power button
- Refresh the page
- In the extension bar, click on the uBlock icon
- Click on the big, blue power button
- Refresh the page
- In the extension bar, click on the UltraBlock icon
- Check the "Disable UltraBlock" checkbox
- Please disable your Ad Blocker
- Disable any DNS blocking tools such as AdGuardDNS or NextDNS
- Disable any privacy or tracking protection extensions such as Firefox Enhanced Tracking Protection or DuckDuckGo Privacy.
If the prompt is still appearing, please disable any tools or services you are using that block internet ads (e.g. DNS Servers, tracking protection or privacy extensions).
Question
Jon Willis
Hi all,
(deep breath)
So, I have an injected dll that is constantly looping the following code:
long startAddress = atol(szRecvBufferSplit); szRecvBufferSplit = strtok(NULL, "|"); int numberOfBytes = atoi(szRecvBufferSplit); MEMORY_BASIC_INFORMATION mbi; if(VirtualQuery((LPCVOID)startAddress, &mbi, sizeof(mbi))) { if (&mbi && mbi.State == MEM_COMMIT && mbi.Protect != PAGE_NOACCESS && mbi.Protect != PAGE_GUARD) { if(VirtualProtect((LPVOID)startAddress, numberOfBytes, PAGE_EXECUTE_READWRITE, &dwOldProtect)) { //if(safeMethod) //memcpy(szSendBuffer, (void*)startAddress, numberOfBytes); for(int i = 0; i < numberOfBytes; i++) { szSendBuffer[i] = *(unsigned char*)(startAddress + i); } VirtualProtect((LPVOID)startAddress, numberOfBytes, dwOldProtect, &dwOldProtect); } } }
The intent of the following code is to read memory without calling ReadProcessMemory and is part of a memory scanning application that I've written. The application scans all of the process' private memory once, and then when it begins a second iteration, it will crash.
The crash occurs when memory is read, after VirtualProtect reports a successful operation. As you can determine from the code, the memory region I am unprotecting and reading from is committed and accessible.
I'm completely baffled as to why reading memory a second time is causing a crash.
Link to comment
https://www.neowin.net/forum/topic/785642-problems-with-memory-reading-inside-injected-dll-virtualprotect/Share on other sites
7 answers to this question
Recommended Posts