-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
PointerscannerSettingsFrm.lfm
executable file
·1070 lines (1070 loc) · 37.3 KB
/
PointerscannerSettingsFrm.lfm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
object frmPointerScannerSettings: TfrmPointerScannerSettings
Left = 708
Height = 538
Top = 149
Width = 682
AutoSize = True
BorderStyle = bsSingle
Caption = 'Pointerscanner scanoptions'
ClientHeight = 538
ClientWidth = 682
OnCreate = FormCreate
OnDestroy = FormDestroy
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '2.2.2.0'
object cbValueType: TComboBox
AnchorSideLeft.Control = cbAddress
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cbAddress
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 555
Height = 23
Top = 43
Width = 124
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
ItemHeight = 15
ItemIndex = 0
Items.Strings = (
'4 Byte'
'Float'
'Double'
)
Style = csDropDownList
TabOrder = 0
Text = '4 Byte'
end
object Panel2: TPanel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 8
Height = 23
Top = 0
Width = 418
AutoSize = True
BorderSpacing.Left = 8
BevelOuter = bvNone
ClientHeight = 23
ClientWidth = 418
TabOrder = 1
object rbFindAddress: TRadioButton
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = Panel2
Left = 0
Height = 19
Top = 4
Width = 106
BorderSpacing.Top = 4
Caption = 'Scan for address'
Checked = True
OnChange = rbFindValueClick
TabOrder = 0
TabStop = True
end
object rbFindValue: TRadioButton
AnchorSideLeft.Control = rbFindAddress
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = rbFindAddress
Left = 109
Height = 19
Top = 4
Width = 174
BorderSpacing.Left = 3
Caption = 'Scan for addresses with value'
OnChange = rbFindValueClick
TabOrder = 1
end
object rbGeneratePointermap: TRadioButton
AnchorSideLeft.Control = rbFindValue
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = rbFindValue
Left = 286
Height = 19
Top = 4
Width = 132
BorderSpacing.Left = 3
Caption = 'Generate pointermap'
OnChange = rbFindValueClick
TabOrder = 2
end
end
object cbUseLoadedPointermap: TCheckBox
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = Panel2
AnchorSideTop.Side = asrBottom
Left = 8
Height = 19
Hint = 'Use this if you have created a pointermap on a system that runs the game, but you wish to do the scan on another system (or multiple systems).'#13#10'Checking this option will open a dialog where you can select the pointermap'
Top = 24
Width = 137
BorderSpacing.Top = 1
Caption = 'Use saved pointermap'
OnChange = cbUseLoadedPointermapChange
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object cbCompareToOtherPointermaps: TCheckBox
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = cbAddress
AnchorSideTop.Side = asrBottom
Left = 8
Height = 19
Hint = 'When ticked you can add other pointermaps which will be used to verify that the pointers it finds are correct. You will have to fill in the correct address for each pointermap you provide.'#13#10'Note: expect at least the size of the game itself in memory for every pointermap used'#13#10
Top = 65
Width = 274
BorderSpacing.Top = 1
Caption = 'Compare results with other saved pointermap(s)'
OnChange = cbCompareToOtherPointermapsChange
ParentShowHint = False
ShowHint = True
TabOrder = 3
end
object cbShowAdvancedOptions: TCheckBox
AnchorSideLeft.Control = cbCompareToOtherPointermaps
AnchorSideTop.Control = cbCompareToOtherPointermaps
AnchorSideTop.Side = asrBottom
Left = 8
Height = 19
Top = 88
Width = 146
BorderSpacing.Top = 4
Caption = 'Show advanced options'
OnChange = cbShowAdvancedOptionsChange
TabOrder = 4
end
object Panel3: TPanel
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = cbShowAdvancedOptions
AnchorSideTop.Side = asrBottom
Left = 8
Height = 218
Top = 108
Width = 672
AutoSize = True
BorderSpacing.Top = 1
BevelOuter = bvNone
BorderStyle = bsSingle
ClientHeight = 214
ClientWidth = 668
Color = clWindow
ParentColor = False
TabOrder = 5
Visible = False
object Panel4: TPanel
AnchorSideLeft.Control = Panel3
AnchorSideTop.Control = Panel3
Left = 0
Height = 214
Top = 0
Width = 299
AutoSize = True
BevelOuter = bvNone
ClientHeight = 214
ClientWidth = 299
TabOrder = 0
object cbIncludeSystemModules: TCheckBox
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = cbHeapOnly
AnchorSideTop.Side = asrBottom
Left = 7
Height = 19
Top = 195
Width = 148
Caption = 'Include system modules'
TabOrder = 0
end
object cbHeapOnly: TCheckBox
AnchorSideLeft.Control = cbUseHeapData
AnchorSideTop.Control = cbUseHeapData
AnchorSideTop.Side = asrBottom
Left = 23
Height = 19
Hint = 'If the address you search for isn''t a heap address, the scan will return 0 results'
Top = 176
Width = 273
BorderSpacing.Left = 16
Caption = 'Only allow static and heap addresses in the path'
Enabled = False
OnClick = cbHeapOnlyClick
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object cbUseHeapData: TCheckBox
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = cbScanResidentMemory
AnchorSideTop.Side = asrBottom
Left = 7
Height = 19
Hint = 'When this is checked the heap is used to figure out the offset sizes, instead of blindly guessing them.'#13#10'pro: Greatly improve speed and a lot less useless results'#13#10'con: if the game allocates gigantic chunks of heap memory, and then divides it up itself, this will give wrong results.'#13#10#13#10'In other cases this will give perfect pointers '
Top = 157
Width = 260
Caption = 'Improve pointerscan with gathered heap data'
OnClick = cbUseHeapDataClick
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object Label13: TLabel
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = cbOnlyOneStatic
AnchorSideTop.Side = asrBottom
Left = 7
Height = 15
Top = 76
Width = 229
Caption = 'Pointer path may only be inside this region:'
ParentColor = False
end
object cbOnlyOneStatic: TCheckBox
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = cbNoReadOnly
AnchorSideTop.Side = asrBottom
Left = 7
Height = 19
Hint = 'When the pointerscanner goes through the list of pointervalues with a specific value, this will stop exploring other paths as soon as it encounters a static pointer to that value'#13#10#13#10'pro: Fast'#13#10'con: You may miss some valid results '
Top = 57
Width = 292
Caption = 'Stop traversing a path when a static has been found'
ParentShowHint = False
ShowHint = True
TabOrder = 3
end
object cbNoReadOnly: TCheckBox
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = cbStaticOnly
AnchorSideTop.Side = asrBottom
Left = 7
Height = 19
Hint = 'When checked the pointerscan will throw away memory that is readonly. So when it looks for paths, it won''t encounter paths that pass through read only memory blocks.'#13#10#13#10'When it''s unchecked, it does include readonly memory'#13#10#13#10#13#10'pro: faster, less useless results'#13#10'con: If the game decides to mark a pointer as readonly ce won''t find it '
Top = 38
Width = 252
Caption = 'Don''t include pointers with read-only nodes'
Checked = True
OnChange = canNotReuse
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 4
end
object cbStaticOnly: TCheckBox
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = CbAlligned
AnchorSideTop.Side = asrBottom
Left = 7
Height = 19
Hint = 'When checked the pointerscan will only store a path when it starts with a static address. (or easily looked up address)'#13#10'When it''s disabled, it finds every single pointer path'#13#10#13#10'pro: Fast'#13#10'con: It may miss pointers that are accessed by special paths like thread local storage. (but even then they''d be useless for ce as they will change)'
Top = 19
Width = 210
Caption = 'Only find paths with a static address'
Checked = True
OnChange = cbStaticOnlyChange
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 5
end
object CbAlligned: TCheckBox
AnchorSideLeft.Control = Panel4
AnchorSideTop.Control = Panel4
Left = 7
Height = 19
Hint = 'When enabled, only pointers that are stored in an address dividable by 4 are looked at'#13#10'When disabled, it won''t bother.'#13#10#13#10'pro: Fast scans'#13#10'Con: On some horrible designed games that you shouldn''t even play it won''t find the paths'
Top = 0
Width = 198
BorderSpacing.Left = 7
Caption = 'Addresses must be 32-bit alligned'
Checked = True
OnChange = canNotReuse
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 6
end
object Panel5: TPanel
AnchorSideLeft.Control = Label13
AnchorSideTop.Control = Label13
AnchorSideTop.Side = asrBottom
Left = 7
Height = 47
Top = 91
Width = 110
AutoSize = True
BevelOuter = bvNone
ClientHeight = 47
ClientWidth = 110
TabOrder = 7
object edtReverseStart: TEdit
AnchorSideTop.Control = Panel5
AnchorSideRight.Control = Panel5
AnchorSideRight.Side = asrBottom
Left = 30
Height = 23
Top = 0
Width = 80
Anchors = [akTop, akRight]
CharCase = ecUppercase
MaxLength = 8
OnChange = canNotReuse
TabOrder = 0
Text = '00000000'
end
object Label10: TLabel
AnchorSideTop.Control = edtReverseStart
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = edtReverseStart
Left = 0
Height = 15
Top = 4
Width = 28
Anchors = [akTop, akRight]
BorderSpacing.Right = 2
Caption = 'From'
ParentColor = False
end
object edtReverseStop: TEdit
AnchorSideTop.Control = edtReverseStart
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel5
AnchorSideRight.Side = asrBottom
Left = 30
Height = 23
Top = 24
Width = 80
Anchors = [akTop, akRight]
BorderSpacing.Top = 1
CharCase = ecUppercase
MaxLength = 8
OnChange = canNotReuse
TabOrder = 1
Text = '7FFFFFFF'
end
object Label11: TLabel
AnchorSideTop.Control = edtReverseStop
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = edtReverseStop
Left = 15
Height = 15
Top = 28
Width = 15
Anchors = [akTop, akRight]
Caption = 'To:'
ParentColor = False
end
end
object cbScanResidentMemory: TCheckBox
AnchorSideLeft.Control = CbAlligned
AnchorSideTop.Control = Panel5
AnchorSideTop.Side = asrBottom
Left = 7
Height = 19
Hint = 'Skip paged out memory pages'
Top = 138
Width = 165
Caption = 'Only scan resident memory'
ParentShowHint = False
ShowHint = True
TabOrder = 8
end
end
object Panel6: TPanel
AnchorSideLeft.Control = Panel4
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel4
Left = 306
Height = 198
Top = 0
Width = 362
AutoSize = True
BorderSpacing.Left = 7
BevelOuter = bvNone
ClientHeight = 198
ClientWidth = 362
TabOrder = 1
object cbAcceptNonModuleVtable: TCheckBox
AnchorSideLeft.Control = cbClassPointersOnly
AnchorSideTop.Control = cbClassPointersOnly
AnchorSideTop.Side = asrBottom
Left = 16
Height = 19
Top = 19
Width = 205
BorderSpacing.Left = 16
Caption = 'Also accept non-module addresses'
Enabled = False
TabOrder = 0
end
object cbClassPointersOnly: TCheckBox
AnchorSideLeft.Control = Panel6
AnchorSideTop.Control = Panel6
Left = 0
Height = 19
Hint = 'Object oriented programming languages tend to implement classobjects by having a pointer in the first element to something that describes the class'#13#10'With this option enabled, ce will check if it''s a classobject by checking that rule. If not, it won''t see it as a pointer.'#13#10'pro:Tremendous speed increase and almost perfect pointers'#13#10'con:Doesn''t work with runtime generated classes (java, .net) '
Top = 0
Width = 354
Caption = 'First element of pointerstruct must point to module (e.g vtable)'
OnChange = canNotReuse
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object cbNoLoop: TCheckBox
AnchorSideLeft.Control = Panel6
AnchorSideTop.Control = cbAcceptNonModuleVtable
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Hint = 'This will filter out pointerpaths that ended up in a loop'#13#10'e.g:'#13#10'base->p1->p2->p3->p1->p4'#13#10#13#10'you could just as well do base->p1->p4 then, so throw this one away (base->p1->p4 will be found another way)'#13#10#13#10'pro: Less results so less diskspace used'#13#10'con: slightly slows down the scan as it needs to check for loops every single iteration '
Top = 38
Width = 126
Caption = 'No looping pointers'
Checked = True
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 2
end
object cbStaticStacks: TCheckBox
AnchorSideLeft.Control = Panel6
AnchorSideTop.Control = cbNoLoop
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Hint = 'This allows the stack of threads to be seen as static addresses by the pointerscan.'#13#10'The main thread is always a sure bet that it''s the first one in the list. And often the second thread created is pretty stable as well.'#13#10'With more there''s a bigger change they get created and destroyed randomly'#13#10#13#10'When a program enters a function and exits it, the stack pointer decreases and increases, and the data there gets written to.'#13#10'The farther the game is inside function calls, the more static the older data will be.'#13#10#13#10'With max stack offset: you can set the max size that can be deemed as static enough.'#13#10#13#10'pro: It finds paths otherwise never found'#13#10'con: More results, more diskspace '
Top = 57
Width = 362
Caption = 'Allow stack addresses of the first thread(s) to be handled as static'
Checked = True
OnChange = cbStaticStacksChange
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 3
end
object lblNumberOfStackThreads: TLabel
AnchorSideLeft.Control = cbStaticStacks
AnchorSideTop.Control = edtThreadStacks
AnchorSideTop.Side = asrCenter
Left = 16
Height = 15
Top = 80
Width = 221
BorderSpacing.Left = 16
Caption = 'Number of threads from oldest to newest:'
ParentColor = False
end
object edtThreadStacks: TEdit
AnchorSideLeft.Control = lblNumberOfStackThreads
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cbStaticStacks
AnchorSideTop.Side = asrBottom
Left = 237
Height = 23
Hint = 'Fill in the total number of threads that should be allowed to be used as a stack lookup.'#13#10'Thread 1 is usually the main thread of the game, but if that one spawns another thread for game related events, you might want to have that secondary thread as well.'#13#10'More threads is not recommend as they may get created and destroyed on the fly, and are therefore useless as a lookup base, but it depends on the game.'
Top = 76
Width = 24
ParentShowHint = False
ShowHint = True
TabOrder = 4
Text = '2'
end
object edtStackSize: TEdit
AnchorSideLeft.Control = lblStackSize
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtThreadStacks
AnchorSideTop.Side = asrBottom
Left = 253
Height = 23
Top = 99
Width = 80
TabOrder = 5
Text = '4096'
end
object lblStackSize: TLabel
AnchorSideLeft.Control = lblNumberOfStackThreads
AnchorSideTop.Control = edtStackSize
AnchorSideTop.Side = asrCenter
Left = 16
Height = 15
Top = 103
Width = 237
Caption = 'Max stackoffset to be deemed static enough:'
ParentColor = False
end
object cbStackOnly: TCheckBox
AnchorSideLeft.Control = lblStackSize
AnchorSideTop.Control = edtStackSize
AnchorSideTop.Side = asrBottom
Left = 16
Height = 19
Hint = 'Enable this if you wish to only find pointer paths with a stack address.'#13#10'Combine this with "Only find paths with a static address" (default on) else this option will have no effect'#13#10#13#10'pro: You''ll only get paths from the stack'#13#10'con: You don''t get paths from random dll''s or the .exe '
Top = 122
Width = 224
Caption = 'Stack addresses as ONLY static address'
ParentShowHint = False
ShowHint = True
TabOrder = 6
end
object cbLimitScanToRegionFile: TCheckBox
AnchorSideLeft.Control = Panel6
AnchorSideTop.Control = cbStackOnly
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 141
Width = 194
Caption = 'Limit scan to specified region file'
OnChange = cbLimitScanToRegionFileChange
TabOrder = 7
end
object cbCompressedPointerscanFile: TCheckBox
AnchorSideLeft.Control = Panel6
AnchorSideTop.Control = cbNegativeOffsets
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Hint = 'Compresses the generated .PTR files slightly so they take less space on the disk and less time writing to disk.'#13#10'Most of the time the bottleneck of a pointerscan is disk writing, so it is recommended to use this option.'#13#10#13#10'Compressed .PTR files can not be read out by older Cheat Engine versions'
Top = 179
Width = 170
Caption = 'Compressed pointerscan file'
Checked = True
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 8
end
object cbNegativeOffsets: TCheckBox
AnchorSideLeft.Control = Panel6
AnchorSideTop.Control = cbLimitScanToRegionFile
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Hint = 'Let''s you scan for negative offsets'#13#10'Can not be used in combination with compressed pointerscan files'
Top = 160
Width = 174
Caption = 'Also scan for negative offsets'
OnChange = cbNegativeOffsetsChange
ParentShowHint = False
ShowHint = True
TabOrder = 9
end
end
end
object cbAddress: TComboBox
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = cbUseLoadedPointermap
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = cbValueType
Left = 8
Height = 21
Top = 43
Width = 543
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Right = 4
DropDownCount = 0
ItemHeight = 15
OnChange = edtAddressChange
OnDrawItem = cbAddressDrawItem
Style = csOwnerDrawEditableFixed
TabOrder = 6
end
object Panel1: TPanel
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Panel9
AnchorSideTop.Side = asrBottom
Left = 174
Height = 86
Top = 445
Width = 335
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Bottom = 4
BevelOuter = bvNone
ClientHeight = 86
ClientWidth = 335
Constraints.MinWidth = 330
TabOrder = 7
OnClick = Panel1Click
object Panel8: TPanel
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
Left = 0
Height = 86
Top = 0
Width = 183
AutoSize = True
BevelOuter = bvNone
ClientHeight = 86
ClientWidth = 183
TabOrder = 0
object Label9: TLabel
AnchorSideTop.Control = edtThreadcount
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = edtThreadcount
Left = 0
Height = 15
Top = 4
Width = 123
Anchors = [akTop, akRight]
Caption = 'Nr of threads scanning:'
ParentColor = False
end
object edtThreadcount: TEdit
AnchorSideTop.Control = Panel8
AnchorSideRight.Control = Panel8
AnchorSideRight.Side = asrBottom
Left = 123
Height = 23
Top = 0
Width = 60
Anchors = [akTop, akRight]
TabOrder = 0
Text = '2'
end
object editStructsize: TEdit
AnchorSideTop.Control = edtThreadcount
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel8
AnchorSideRight.Side = asrBottom
Left = 123
Height = 23
Top = 33
Width = 60
Anchors = [akTop, akRight]
BorderSpacing.Top = 10
TabOrder = 1
Text = '4095'
end
object Label3: TLabel
AnchorSideTop.Control = editStructsize
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = editStructsize
Left = 1
Height = 15
Top = 37
Width = 122
Anchors = [akTop, akRight]
Caption = 'Maximum offset value:'
ParentColor = False
end
object btnOk: TButton
AnchorSideTop.Control = editStructsize
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel8
AnchorSideRight.Side = asrBottom
Left = 108
Height = 25
Top = 61
Width = 75
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 5
Caption = 'OK'
Constraints.MinWidth = 75
Default = True
OnClick = btnOkClick
TabOrder = 2
end
end
object Panel7: TPanel
AnchorSideLeft.Control = Panel8
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
Left = 190
Height = 86
Top = 0
Width = 145
AutoSize = True
BorderSpacing.Left = 7
BevelOuter = bvNone
ClientHeight = 86
ClientWidth = 145
TabOrder = 1
object Label12: TLabel
AnchorSideLeft.Control = Panel7
AnchorSideTop.Control = editMaxLevel
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = editMaxLevel
AnchorSideRight.Side = asrCenter
Left = 0
Height = 15
Top = 37
Width = 50
Caption = 'Max level'
ParentColor = False
end
object ComboBox1: TComboBox
AnchorSideLeft.Control = Panel7
AnchorSideTop.Control = Panel7
Left = 0
Height = 23
Top = 0
Width = 140
BorderSpacing.Right = 5
ItemHeight = 15
ItemIndex = 3
Items.Strings = (
'Idle'
'Lowest'
'Lower'
'Normal'
'Higher'
'Highest'
'TimeCritical'
)
Style = csDropDownList
TabOrder = 0
Text = 'Normal'
end
object editMaxLevel: TEdit
AnchorSideLeft.Control = Label12
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = ComboBox1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ComboBox1
AnchorSideRight.Side = asrBottom
Left = 54
Height = 23
Top = 33
Width = 86
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 4
BorderSpacing.Top = 10
Constraints.MinWidth = 80
TabOrder = 1
Text = '7'
end
object btnCancel: TButton
AnchorSideLeft.Control = Panel7
AnchorSideTop.Control = editMaxLevel
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 25
Top = 61
Width = 75
AutoSize = True
BorderSpacing.Top = 5
Cancel = True
Caption = 'Cancel'
Constraints.MinWidth = 75
ModalResult = 2
TabOrder = 2
end
end
end
object Panel9: TPanel
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = Panel3
AnchorSideTop.Side = asrBottom
Left = 8
Height = 111
Top = 326
Width = 597
AutoSize = True
BevelOuter = bvNone
ClientHeight = 111
ClientWidth = 597
TabOrder = 8
object Panel10: TPanel
Left = 0
Height = 111
Top = 0
Width = 223
AutoSize = True
BevelOuter = bvNone
ClientHeight = 111
ClientWidth = 223
TabOrder = 0
object cbMustStartWithBase: TCheckBox
AnchorSideLeft.Control = Panel10
AnchorSideTop.Control = edtMaxOffsetsPerNode
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Hint = 'Will only mark the given range as valid base address (Will reduce the number of results)'#13#10'This internally makes use of the "Only find paths with a static address" feature by marking the provided range as static only, so it must be enabled.'
Top = 25
Width = 222
Caption = 'Base address must be in specific range'
OnChange = cbMustStartWithBaseChange
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
object cbMustEndWithSpecificOffset: TCheckBox
AnchorSideLeft.Control = Panel10
AnchorSideTop.Control = Panel12
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 92
Width = 223
Caption = 'Pointers must end with specific offsets'
OnChange = cbMustEndWithSpecificOffsetChange
TabOrder = 1
end
object cbMaxOffsetsPerNode: TCheckBox
AnchorSideLeft.Control = Panel10
AnchorSideTop.Control = edtMaxOffsetsPerNode
AnchorSideTop.Side = asrCenter
Left = 0
Height = 19
Hint = 'When the pointerscan looks through the list of pointers with a specific value, it goes through every single pointer that has that value. Every time increasing the offset slightly.'#13#10'With this feature enabled the pointerscan will only check the first few pointers with that value.'#13#10#13#10'pro: Extremely fast, and the results have the lowest pointer paths possible.'#13#10'con: You''ll miss a lot of pointers that might be valid too '
Top = 4
Width = 182
Caption = 'Max different offsets per node:'
Checked = True
OnChange = cbMaxOffsetsPerNodeChange
ParentShowHint = False
ShowHint = True
State = cbChecked
TabOrder = 2
end
object edtMaxOffsetsPerNode: TEdit
AnchorSideLeft.Control = cbMaxOffsetsPerNode
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel10
Left = 182
Height = 23
Top = 2
Width = 40
BorderSpacing.Top = 2
TabOrder = 3
Text = '3'
end
object Panel12: TPanel
AnchorSideLeft.Control = Panel10
AnchorSideTop.Control = cbMustStartWithBase
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = cbMustStartWithBase
AnchorSideRight.Side = asrBottom
Left = 0
Height = 48
Top = 44
Width = 216
AutoSize = True
BevelOuter = bvNone
ClientHeight = 48
ClientWidth = 216
TabOrder = 4
Visible = False
object edtBaseFrom: TEdit
AnchorSideLeft.Control = Label4
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel12
AnchorSideRight.Control = Panel12
AnchorSideRight.Side = asrBottom
Left = 30
Height = 23
Top = 0
Width = 186
Anchors = [akTop, akRight]
BorderSpacing.Left = 2
TabOrder = 0
end
object Label2: TLabel
AnchorSideLeft.Control = Panel12
AnchorSideTop.Control = edtBaseTo
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = edtBaseTo
Left = 16
Height = 15
Top = 29
Width = 12
Anchors = [akTop, akRight]
Caption = 'To'
ParentColor = False
end
object Label4: TLabel
AnchorSideLeft.Control = Panel12
AnchorSideTop.Control = edtBaseFrom
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = edtBaseFrom
Left = 0
Height = 15
Top = 4
Width = 28
Anchors = [akTop, akRight]
Caption = 'From'
ParentColor = False
end
object edtBaseTo: TEdit
AnchorSideTop.Control = edtBaseFrom
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel12
AnchorSideRight.Side = asrBottom
Left = 30
Height = 23
Top = 25
Width = 186
Anchors = [akTop, akRight]
BorderSpacing.Left = 2
BorderSpacing.Top = 2
TabOrder = 1
end
end
end
object Panel11: TPanel
AnchorSideLeft.Control = Panel10
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel9
Left = 308
Height = 62
Top = 0
Width = 289
AutoSize = True
BorderSpacing.Left = 85
BevelOuter = bvNone
ClientHeight = 62
ClientWidth = 289
TabOrder = 1
object cbAllowRuntimeWorkers: TCheckBox
AnchorSideLeft.Control = Panel11
AnchorSideTop.Control = Panel11
Left = 0
Height = 19
Hint = 'Opens a port that other systems running the pointerscanner can connect to and help out with the scan'
Top = 0
Width = 217
Caption = 'Allow scanners to connect at runtime'
OnChange = cbAllowRuntimeWorkersChange
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
object lblPort: TLabel
AnchorSideLeft.Control = cbAllowRuntimeWorkers
AnchorSideTop.Control = cbAllowRuntimeWorkers
AnchorSideTop.Side = asrBottom
Left = 16
Height = 15
Top = 24
Width = 25
BorderSpacing.Left = 16
BorderSpacing.Top = 5
Caption = 'Port:'
ParentColor = False
end
object edtDistributedPort: TEdit
AnchorSideLeft.Control = lblPort
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblPort
AnchorSideTop.Side = asrCenter
Left = 41
Height = 23
Top = 20
Width = 103
Enabled = False
TabOrder = 1
Text = '52737'
end
object edtDistributedPassword: TEdit
AnchorSideLeft.Control = Label1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDistributedPort
AnchorSideRight.Control = Panel11
AnchorSideRight.Side = asrBottom
Left = 204
Height = 23
Top = 20
Width = 80
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 5
BorderSpacing.Right = 5
Constraints.MinWidth = 80
Enabled = False
MaxLength = 255
TabOrder = 2
end
object Label1: TLabel
AnchorSideLeft.Control = edtDistributedPort
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDistributedPort
AnchorSideTop.Side = asrCenter
Left = 149
Height = 15
Top = 24
Width = 50
BorderSpacing.Left = 5
Caption = 'Password'
ParentColor = False
end
object cbConnectToNode: TCheckBox
AnchorSideLeft.Control = Panel11
AnchorSideTop.Control = edtDistributedPort
AnchorSideTop.Side = asrBottom
Left = 0