mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
166 lines
4.9 KiB
Text
166 lines
4.9 KiB
Text
|
|
object Form7: TForm7
|
||
|
|
Left = 830
|
||
|
|
Top = 234
|
||
|
|
BorderStyle = bsDialog
|
||
|
|
Caption = 'Step 6'
|
||
|
|
ClientHeight = 250
|
||
|
|
ClientWidth = 571
|
||
|
|
Color = clBtnFace
|
||
|
|
Font.Charset = DEFAULT_CHARSET
|
||
|
|
Font.Color = clWindowText
|
||
|
|
Font.Height = -11
|
||
|
|
Font.Name = 'MS Sans Serif'
|
||
|
|
Font.Style = []
|
||
|
|
OldCreateOrder = False
|
||
|
|
Position = poOwnerFormCenter
|
||
|
|
OnClose = FormClose
|
||
|
|
OnCloseQuery = FormCloseQuery
|
||
|
|
OnCreate = FormCreate
|
||
|
|
PixelsPerInch = 96
|
||
|
|
TextHeight = 13
|
||
|
|
object Label1: TLabel
|
||
|
|
Left = 8
|
||
|
|
Top = 216
|
||
|
|
Width = 18
|
||
|
|
Height = 13
|
||
|
|
Caption = '100'
|
||
|
|
end
|
||
|
|
object Label2: TLabel
|
||
|
|
Left = 96
|
||
|
|
Top = 215
|
||
|
|
Width = 6
|
||
|
|
Height = 13
|
||
|
|
Caption = '3'
|
||
|
|
Visible = False
|
||
|
|
end
|
||
|
|
object SpeedButton1: TSpeedButton
|
||
|
|
Left = 544
|
||
|
|
Top = 232
|
||
|
|
Width = 25
|
||
|
|
Height = 17
|
||
|
|
Caption = 'Skip'
|
||
|
|
Flat = True
|
||
|
|
OnClick = SpeedButton1Click
|
||
|
|
end
|
||
|
|
object Memo1: TMemo
|
||
|
|
Left = 0
|
||
|
|
Top = 0
|
||
|
|
Width = 571
|
||
|
|
Height = 185
|
||
|
|
Align = alTop
|
||
|
|
Color = clBtnFace
|
||
|
|
Lines.Strings = (
|
||
|
|
|
||
|
|
'In the previous step I explained how to use the Code finder to h' +
|
||
|
|
'andle changing locations. But that method alone '
|
||
|
|
|
||
|
|
'makes it difficult to find the address to set the values you wan' +
|
||
|
|
't.'
|
||
|
|
'That'#39's why there are pointers:'
|
||
|
|
''
|
||
|
|
|
||
|
|
'At the bottom you'#39'll find 2 buttons. One will change the value, ' +
|
||
|
|
'and the other changes the value AND the location of '
|
||
|
|
'the value.'
|
||
|
|
|
||
|
|
'For this step you don'#39't really need to know assembler, but it he' +
|
||
|
|
'lps a lot if you do.'
|
||
|
|
''
|
||
|
|
|
||
|
|
'First find the address of the value. When you'#39've found it use th' +
|
||
|
|
'e function to find out what accesses this address.'
|
||
|
|
|
||
|
|
'Change the value again, and a item will show in the list. Double' +
|
||
|
|
' click that item. (or select and click on more info) and '
|
||
|
|
|
||
|
|
'a new window will open with detailed information on what happene' +
|
||
|
|
'd when the instruction ran.'
|
||
|
|
|
||
|
|
'If the assembler instruction doesn'#39't have anything between a '#39'['#39 +
|
||
|
|
' and '#39']'#39' then use another item in the list.'
|
||
|
|
|
||
|
|
'If it does it will say what it think will be the value of the po' +
|
||
|
|
'inter you need.'
|
||
|
|
|
||
|
|
'Go back to the main cheat engine window (you can keep this extra' +
|
||
|
|
' info window open if you want, but if you close it, '
|
||
|
|
|
||
|
|
'remember what is between the [ and ] ) and do a 4 byte scan in h' +
|
||
|
|
'exadecimal for the value the extra info told you.'
|
||
|
|
|
||
|
|
'When done scanning it may return 1 or a few hundred addresses. M' +
|
||
|
|
'ost of the time the address you need will be the '
|
||
|
|
|
||
|
|
'smallest one. Now click on manually add and select the pointer c' +
|
||
|
|
'heckbox.'
|
||
|
|
''
|
||
|
|
|
||
|
|
'The window will change and allow you to type in the address of a' +
|
||
|
|
' pointer and a offset.'
|
||
|
|
'Fill in as address the address you just found.'
|
||
|
|
|
||
|
|
'If the assembler instruction has a calculation (e.g: [esi+12]) a' +
|
||
|
|
't the end then type the value in that'#39's at the end. else '
|
||
|
|
|
||
|
|
'leave it 0. If it was a more complicated instruction look at the' +
|
||
|
|
' calculation.'
|
||
|
|
''
|
||
|
|
'example of a more complicated instruction:'
|
||
|
|
'[EAX*2+EDX+00000310] eax=4C and edx=00801234.'
|
||
|
|
|
||
|
|
'In this case EDX would be the value the pointer has, and EAX*2+0' +
|
||
|
|
'0000310 the offset, so the offset you'#39'd fill in '
|
||
|
|
|
||
|
|
'would be 2*4C+00000310=3A8. (this is all in hex, use cal.exe fr' +
|
||
|
|
'om windows in scientific mode to calculate)'
|
||
|
|
''
|
||
|
|
|
||
|
|
'Back to the tutorial, click OK and the address will be added, If' +
|
||
|
|
' all went right the address will show P->xxxxxxx, with '
|
||
|
|
|
||
|
|
'xxxxxxx being the address of the value you found. If thats not r' +
|
||
|
|
'ight, you'#39've done something wrong.'
|
||
|
|
|
||
|
|
'Now, change the value using the pointer you added in 5000 and fr' +
|
||
|
|
'eeze it. Then click Change pointer, and if all went '
|
||
|
|
'right the next button will become visible.'
|
||
|
|
''
|
||
|
|
''
|
||
|
|
'extra:'
|
||
|
|
|
||
|
|
'And you could also use the pointer scanner to find the pointer t' +
|
||
|
|
'o this address')
|
||
|
|
ReadOnly = True
|
||
|
|
ScrollBars = ssVertical
|
||
|
|
TabOrder = 0
|
||
|
|
end
|
||
|
|
object Button2: TButton
|
||
|
|
Left = 248
|
||
|
|
Top = 192
|
||
|
|
Width = 75
|
||
|
|
Height = 25
|
||
|
|
Caption = 'Next'
|
||
|
|
Enabled = False
|
||
|
|
TabOrder = 1
|
||
|
|
OnClick = Button2Click
|
||
|
|
end
|
||
|
|
object Button1: TButton
|
||
|
|
Left = 8
|
||
|
|
Top = 228
|
||
|
|
Width = 81
|
||
|
|
Height = 19
|
||
|
|
Caption = 'Change value'
|
||
|
|
TabOrder = 2
|
||
|
|
OnClick = Button1Click
|
||
|
|
end
|
||
|
|
object Button3: TButton
|
||
|
|
Left = 93
|
||
|
|
Top = 228
|
||
|
|
Width = 81
|
||
|
|
Height = 19
|
||
|
|
Caption = 'Change pointer'
|
||
|
|
TabOrder = 3
|
||
|
|
OnClick = Button3Click
|
||
|
|
end
|
||
|
|
end
|