Ok dann will ich es mal so halbwegs selbst beantworten - soweit es eben stimmt.
das hier dürfte als so halbwegs stimmen um die position der section zu bestimmen
Delphi-Quellcode:
rawCodePosition := SHD^.PointerToRawData;
virtualCodeSize := SHD^.Misc.VirtualSize;
wobei sich der startpointer dann so berechnet:
startpos := offset + rawCodePosition;
offset ist in dem fall einfach der begin des dos header wie man ihn von moduleentry32 bekommt.
lesen kann man also einfach so:
Delphi-Quellcode:
for i := 0 to INH^.FileHeader.NumberOfSections-1 do
begin
rawCodePosition := SHD^.PointerToRawData;
virtualCodeSize := SHD^.Misc.VirtualSize;
repeat
if ReadProcessMemory(pr,pointer(startpos),@puffer,Sizeof(puffer),read) then
begin
counter := counter + read;
startpos := startpos + read;
........
until counter >= virtualCodeSize;
.......
end;
wobei ich diesmal als puffer
puffer : Array [0..4095] of Byte;
genommen habe.
für mich bleibt nur noch die frage wie man den puffer am bessten durchsucht.
ich hab das alles mal in einen memory stream geschreiben.
allerdings stellt sich mir die frage wie ich das am bessten nach strings durchsuche.
die meißten sachen dürften widestrings sein und damit hab ich wenig erfahrung.
wenn darauf jemand eine antwort hat oder einen tip dann bitte antworten.
lg
Arnulf