Skip to content

Commit

Permalink
1.5.45
Browse files Browse the repository at this point in the history
* В анализаторе хуков расширен warning при проверке ImgDelayDescr.ModuleInstance. Добавлена информация об адресе дескриптора.
* В свойствах региона ImgDelayDescr.ModuleInstance теперь дополнительно выводит адрес и имя модуля.
* Изменен диалог поиска, предыдущие поисковые запросы сохраняются в течении сессии.
* Новый диалог результатов поиска.
* В настройки добавлен лимит выводимых поисковых запросов (максимум 1000).
* Исправлена неверная работа с флагом PAGE_WRITECOPY при чтении
* Исправлена неверная работа якорей при смене DPI у нижнего вьювера страниц на главной форме.
  • Loading branch information
AlexanderBagel committed Nov 10, 2024
1 parent 5912a0e commit 09202b5
Show file tree
Hide file tree
Showing 26 changed files with 1,116 additions and 297 deletions.
2 changes: 1 addition & 1 deletion MemoryMap/demos/CallStackConverter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ Call Stack Converter
* В утилите установить ImageBase исполняемого файла (или библиотеки - смотря что интересует)
* Открыть исполняемый файл или библиотеку (наличие MAP файла обязательно)
* Нажать кнопку конвертации
* Результат можно скопировать через PopupMenu
* Результат можно скопировать через PopupMenu
3 changes: 2 additions & 1 deletion ProcessMM.dpr
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,8 @@ uses
RawScanner.Image.Elf in 'RawScanner\RawScanner.Image.Elf.pas',
RawScanner.MapGenerator in 'RawScanner\RawScanner.MapGenerator.pas',
RawScanner.AbstractImage in 'RawScanner\RawScanner.AbstractImage.pas',
RawScanner.Image.Coff in 'RawScanner\RawScanner.Image.Coff.pas';
RawScanner.Image.Coff in 'RawScanner\RawScanner.Image.Coff.pas',
uSearchResult in 'src\gui\uSearchResult.pas' {dlgSearchResult};

{$R *.res}

Expand Down
12 changes: 8 additions & 4 deletions ProcessMM.dproj
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<SanitizedProjectName>ProcessMM</SanitizedProjectName>
<VerInfo_Keys>CompanyName=;FileDescription=Tool for examining process memory;FileVersion=1.5.44.1438;InternalName=pmm.exe;LegalCopyright=© Alexander (Rouse_) Bagel;LegalTrademarks=;OriginalFilename=ProcessMM.exe;ProductName=Process Memory Map;ProductVersion=1.5;Comments=</VerInfo_Keys>
<VerInfo_Keys>CompanyName=;FileDescription=Tool for examining process memory;FileVersion=1.5.45.1463;InternalName=pmm.exe;LegalCopyright=© Alexander (Rouse_) Bagel;LegalTrademarks=;OriginalFilename=ProcessMM.exe;ProductName=Process Memory Map;ProductVersion=1.5;Comments=</VerInfo_Keys>
<Manifest_File>None</Manifest_File>
<VerInfo_Locale>1033</VerInfo_Locale>
<Icon_MainIcon>ProcessMM_Icon1.ico</Icon_MainIcon>
Expand All @@ -90,8 +90,8 @@
<DCC_K>false</DCC_K>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_MinorVer>5</VerInfo_MinorVer>
<VerInfo_Release>44</VerInfo_Release>
<VerInfo_Build>1438</VerInfo_Build>
<VerInfo_Release>45</VerInfo_Release>
<VerInfo_Build>1463</VerInfo_Build>
<DCC_MapFile>3</DCC_MapFile>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<VerInfo_PreRelease>true</VerInfo_PreRelease>
Expand Down Expand Up @@ -176,7 +176,7 @@ $(PreBuildEvent)]]></PreBuildEvent>
<DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
<DCC_RangeChecking>true</DCC_RangeChecking>
<DCC_Optimize>false</DCC_Optimize>
<Debugger_RunParams>14460</Debugger_RunParams>
<Debugger_RunParams>13988</Debugger_RunParams>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
Expand Down Expand Up @@ -283,6 +283,10 @@ $(PreBuildEvent)]]></PreBuildEvent>
<DCCReference Include="RawScanner\RawScanner.MapGenerator.pas"/>
<DCCReference Include="RawScanner\RawScanner.AbstractImage.pas"/>
<DCCReference Include="RawScanner\RawScanner.Image.Coff.pas"/>
<DCCReference Include="src\gui\uSearchResult.pas">
<Form>dlgSearchResult</Form>
<FormType>dfm</FormType>
</DCCReference>
<None Include="RawScanner\rawscanner.inc"/>
<None Include="README.md"/>
<None Include="updates.txt"/>
Expand Down
Binary file modified ProcessMM.res
Binary file not shown.
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

### Внутренние версии фреймворков:
* MemoryMap Core - 1.4.37
* RawScanner Core - 1.1.23
* RawScanner Core - 1.1.24
* FWZip - 2.0.4
* Distorm - 3.5.3

Expand All @@ -57,6 +57,15 @@

### Обновления:

1.5.45 от 10.11.2024
* В анализаторе хуков расширен warning при проверке ImgDelayDescr.ModuleInstance. Добавлена информация об адресе дескриптора.
* В свойствах региона ImgDelayDescr.ModuleInstance теперь дополнительно выводит адрес и имя модуля.
* Изменен диалог поиска, предыдущие поисковые запросы сохраняются в течении сессии.
* Новый диалог результатов поиска.
* В настройки добавлен лимит выводимых поисковых запросов (максимум 1000).
* Исправлена неверная работа с флагом PAGE_WRITECOPY при чтении
* Исправлена неверная работа якорей при смене DPI у нижнего вьювера страниц на главной форме.

1.5.44 от 07.11.2024
* В настройки добавлен таймер автообновления окна свойств региона. По умолчанию отключен.

Expand Down
7 changes: 5 additions & 2 deletions RawScanner/RawScanner.Analyzer.pas
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// * : на основе образов файлов с диска и отдает результаты наружу.
// * Author : Александр (Rouse_) Багель
// * Copyright : © Fangorn Wizards Lab 1998 - 2024.
// * Version : 1.1.20
// * Version : 1.1.24
// * Home Page : http://rouse.drkb.ru
// * Home Blog : http://alexander-bagel.blogspot.ru
// ****************************************************************************
Expand Down Expand Up @@ -742,10 +742,13 @@ procedure TPatchAnalyzer.ScanImport(Index: Integer; Module: TRawPEImage);
FRawModules.Items.List[ModuleIndex].ImageName,
Import.LibraryName);
if not ValidModule then
begin
Warn(
'Wrong ImgDelayDescr in ' + GetLogStr(Import.DelayedModuleInstanceVA),
'Wrong ImgDelayDescr(' + IntToHex(Import.DelayedDescriptorVA) + ').ModuleInstance field in ' +
GetLogStr(Import.DelayedModuleInstanceVA),
'invalid hInstance: ' + IntToHex(DelayedModuleInst) + Space +
GetMappedModule(FProcessHandle, DelayedModuleInst));
end;
end;
end;

Expand Down
14 changes: 11 additions & 3 deletions RawScanner/RawScanner.CoffDwarf.pas
Original file line number Diff line number Diff line change
Expand Up @@ -1370,7 +1370,7 @@ TDwarfDebugInfo = class;
TUnitInfosList = TObjectList<TDwarfInfoUnit>;
TDwarfBeforeLoadCallback = reference to procedure(ADwarfDebugInfo: TDwarfDebugInfo);

TLoadCallbackStep = (lcsLoadInfo, lcsProcessInfo, lcsLoadLines);
TLoadCallbackStep = (lcsLoadInfo, lcsPrepareAddr, lcsProcessInfo, lcsLoadLines);
TDwarfLoadCallback = reference to procedure(AStep: TLoadCallbackStep; ACurrent, AMax: Int64);

TDwarfDebugInfo = class
Expand Down Expand Up @@ -3963,7 +3963,7 @@ function TDwarfDebugInfo.LoadInfo(Ctx: TDwarfContext): Boolean;
AUnit: TDwarfInfoUnit;
DieList: TDieList;
AAbsoluteDict: TAddrDict;
I, LoadIndex: Integer;
I, LoadIndex, Part: Integer;
{$IFDEF USE_PROFILING}
sw: TStopwatch;
{$ENDIF}
Expand All @@ -3986,7 +3986,8 @@ function TDwarfDebugInfo.LoadInfo(Ctx: TDwarfContext): Boolean;
else
FUnitInfos.Add(AUnit);
{$IFDEF USE_PROFILING}
AUnit.Elapsed := sw.ElapsedMilliseconds;
if AUnit <> nil then
AUnit.Elapsed := sw.ElapsedMilliseconds;
{$ENDIF}
DoCallback(lcsLoadInfo, Ctx.debug_info.Position, Ctx.debug_info.Size);
except
Expand All @@ -4004,8 +4005,15 @@ function TDwarfDebugInfo.LoadInfo(Ctx: TDwarfContext): Boolean;
DoCallback(lcsProcessInfo, 0, DieList.Count);
AAbsoluteDict := TAddrDict.Create;
try
DoCallback(lcsPrepareAddr, 0, DieList.Count);
Part := DieList.Count div 100;
for I := 0 to DieList.Count - 1 do
begin
AAbsoluteDict.Add(DieList.List[I].AbsoluteOffset, I);
if I mod Part = 0 then
DoCallback(lcsPrepareAddr, I, DieList.Count);
end;
DoCallback(lcsPrepareAddr, DieList.Count, DieList.Count);
LoadIndex := 0;
for AUnit in FUnitInfos do
begin
Expand Down
6 changes: 3 additions & 3 deletions RawScanner/RawScanner.Core.pas
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
// * : адресах
// * Author : Александр (Rouse_) Багель
// * Copyright : © Fangorn Wizards Lab 1998 - 2024.
// * Version : 1.1.23
// * Version : 1.1.24
// * Home Page : http://rouse.drkb.ru
// * Home Blog : http://alexander-bagel.blogspot.ru
// ****************************************************************************
Expand Down Expand Up @@ -44,8 +44,8 @@ interface
RawScanner.X64Gates;

const
RawScannerVersionInt = $01010017;
RawScannerVersionStr = '1.1 (revision 23)';
RawScannerVersionInt = $01010018;
RawScannerVersionStr = '1.1 (revision 24)';

type
TPEB64 = record
Expand Down
10 changes: 7 additions & 3 deletions RawScanner/RawScanner.Image.Pe.pas
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ TImportChunk = record
function ToString: string;
case Boolean of
True: ( // доп данные для отложеного импорта
DelayedModuleInstanceVA, // VA адрес где будет записан инстанс загруженого модуля на который идет отложеный импорт
DelayedIATData: ULONG_PTR64; // RVA адрес или указатель на отложеную функцию
DelayedModuleInstanceVA, // VA адрес где будет записан инстанс загруженого модуля на который идет отложеный импорт
DelayedIATData, // RVA адрес или указатель на отложеную функцию
DelayedDescriptorVA: ULONG_PTR64; // VA адрес дескриптора, нужен для вывода информации если не прошла проверка DelayedModuleInstanceVA
);
end;

Expand Down Expand Up @@ -984,7 +985,10 @@ TImgDelayDescr = record
// VA адрес по которому будет расположен HInstance модуля,
// из которого идет импорт функции после его инициализации
if DelayDescr.rvaHmod <> 0 then
ImportChunk.DelayedModuleInstanceVA := RvaToVa(GetRva(DelayDescr.rvaHmod))
begin
ImportChunk.DelayedModuleInstanceVA := RvaToVa(GetRva(DelayDescr.rvaHmod));
ImportChunk.DelayedDescriptorVA := DescVA;
end
else
ImportChunk.DelayedModuleInstanceVA := 0;

Expand Down
2 changes: 1 addition & 1 deletion plugins/source/delphi/pmm_rich/pmm_rich.dproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<FrameworkType>None</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Release</Config>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Library</AppType>
<MainSource>pmm_rich.dpr</MainSource>
Expand Down
2 changes: 1 addition & 1 deletion plugins/source/dwarfreader/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ DWARF Reader

###Внешний вид:

![1](https://github.com/AlexanderBagel/ProcessMemoryMap/blob/master/plugins/source/dwarfreader/img/1.png?raw=true "Внешний вид")
![1](https://github.com/AlexanderBagel/ProcessMemoryMap/blob/master/plugins/source/dwarfreader/img/1.png?raw=true "Внешний вид")
2 changes: 1 addition & 1 deletion src/gui/uExportList.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ object dlgExportList: TdlgExportList
Height = 337
Align = alClient
Header.AutoSizeIndex = 3
Header.Height = 24
Header.Height = 17
Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoShowSortGlyphs, hoVisible]
PopupMenu = pmCopy
TabOrder = 0
Expand Down
97 changes: 37 additions & 60 deletions src/gui/uFindData.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ object dlgFindData: TdlgFindData
Top = 0
BorderStyle = bsDialog
Caption = 'Process Memory Map - Search Data'
ClientHeight = 218
ClientHeight = 113
ClientWidth = 489
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Expand All @@ -15,84 +15,53 @@ object dlgFindData: TdlgFindData
Position = poMainFormCenter
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 16
Top = 11
Top = 8
Width = 28
Height = 13
Caption = 'ASCII'
Caption = 'Type:'
end
object Label2: TLabel
Left = 16
Top = 38
Width = 46
Height = 13
Caption = 'UNICODE'
end
object Label3: TLabel
Left = 16
Top = 67
Width = 19
Top = 35
Width = 26
Height = 13
Caption = 'HEX'
Caption = 'Text:'
end
object Label4: TLabel
Left = 16
Top = 187
Top = 87
Width = 58
Height = 13
Caption = 'Start (HEX):'
end
object edAnsi: TEdit
Left = 80
Top = 8
Width = 401
Height = 21
TabOrder = 0
OnChange = edAnsiChange
end
object edUnicode: TEdit
Left = 80
Top = 35
Width = 401
Height = 21
TabOrder = 1
OnChange = edUnicodeChange
end
object edHex: TMemo
Left = 80
Top = 64
Width = 401
Height = 89
TabOrder = 2
OnChange = edHexChange
OnKeyPress = edHexKeyPress
end
object btnCancel: TButton
Left = 406
Top = 182
Top = 82
Width = 75
Height = 25
Cancel = True
Caption = 'Cancel'
TabOrder = 3
TabOrder = 0
OnClick = btnCancelClick
end
object btnSearch: TButton
Left = 325
Top = 182
Top = 82
Width = 75
Height = 25
Caption = 'Search'
Default = True
TabOrder = 4
TabOrder = 1
OnClick = btnSearchClick
end
object cbSkipROMem: TCheckBox
Left = 8
Top = 159
Top = 59
Width = 66
Height = 17
Hint = 'Skip "read-only" memory pages'
Expand All @@ -101,33 +70,41 @@ object dlgFindData: TdlgFindData
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 5
TabOrder = 2
OnClick = cbSearchInputTypeChange
end
object ProgressBar: TProgressBar
Left = 80
Top = 159
Top = 59
Width = 401
Height = 17
TabOrder = 6
end
object btnSearchNext: TButton
Left = 232
Top = 182
Width = 87
Height = 25
Caption = 'Search Next >'
Enabled = False
TabOrder = 7
OnClick = btnSearchNextClick
TabOrder = 3
end
object edStartAddr: TEdit
Left = 80
Top = 184
Top = 84
Width = 137
Height = 21
TabOrder = 8
TabOrder = 4
Text = '0'
OnChange = edStartAddrChange
OnKeyPress = edHexKeyPress
end
object cbSearchInputType: TComboBox
Left = 48
Top = 5
Width = 433
Height = 21
Style = csDropDownList
TabOrder = 5
OnChange = cbSearchInputTypeChange
end
object cbSearchText: TComboBox
Left = 48
Top = 32
Width = 433
Height = 21
TabOrder = 6
TextHint = 'Enter search pattern...'
OnChange = cbSearchInputTypeChange
end
end
Loading

0 comments on commit 09202b5

Please sign in to comment.