Results 1 to 1 of 1
  1. #1
    Vitrix Maggot
    Vitrix Maggot is offline
    Member-in-training Vitrix Maggot's Avatar
    Join Date
    2013 Apr
    Location
    Brasil
    Posts
    58
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    43
    Thanked in
    24 Posts
    Rep Power
    0

    Pegando Address, Pointers de CS Metodo²

    Introdução

    Neste tutorial, ensinarei à vocês outro método de pegar Pointers e Offsets para a criação do seu trainer.
    Usarei como exemplo o CS Portable, e fazendo o seu Money Hack.

    In this tutorial I will teach you another method to get Offsets and Pointers for creating your trainer.
    I will use the example of CS Portable and doing your Money Hack.


    Primeiros passos

    Abra o CS Portable, crie um jogo local.

    Open the CS Portable, create a local game



    Pronto, agora deveremos abrir o CheatEngine no caso usarei a versão 6.1

    Okay, now we must open the CheatEngine if I use the version 6.1



    Scans

    Agora temos que ver onde fica o address móvel do money hack,então vamos dar um first scan no 800 (nosso dinheiro atual)

    Now we have to see where is the address of the mobile money hack, so let's take a first scan in 800 (our current cash)



    Agora para descobrir quais são os addresses que realmente importa precisamos modificar esse valor e ver quais mudam corretamente, para isso, compre balas para sua pistola(aperte "." várias vezes):

    Now to find out which are the addresses that really matters need to modify this value and see what change correctly for it, buy bullets for his pistol (press "." Several times):



    E agora daremos "Next Scan" no Cheat Engine com seu novo dinheiro, no meu caso 625:

    And now we will "Next Scan" in Cheat Engine with their new money, in my case 625:



    Estudando o código

    Ficamos com 2 address, um verde e um preto, o verde significa que é fixo, ou seja, se você fechar e abrir o programa novamente ele continuará o mesmo. Como já fiz esse hack sei que este address fixo é apenas o que desenha o número (responsável apenas pelo gráfico), mas por motivos didáticos irei provar isto, adicione os dois address na tabela e clique no verde em "Find out what writes this address"

    We get two addresses, one green and one black, green means it is fixed, ie, if you close and open the program again it will remain the same. As I did this hack know this address is fixed only what draws the number (only responsible for chart), but for didactic reasons I will prove it, add the two address in the table and click the green "Find out what writes this address "



    Ele vai abrir uma tela, esta é a que reconhecerá onde ele foi escrito, para isso modifica o address novamente, comprando uma granada, por exemplo.

    It will open a screen, recognize that this is where he was writing to the address modifies it again, buying a grenade, for example.





    Vejamos onde estamos CreateInterface + 53FB1, se estudar-mos essa parte vemos que esta parte desenha o jogo inteiro, bom então o valor do dinheiro em si fica no address móvel, então faça o "Find out what writes this address" no móvel e vejamos o que temos:

    Let's see where we are CreateInterface + 53FB1 if we study this part we see that this part draws the whole game, well then the value of money itself is the mobile address, then do the "Find out what writes this address" on mobile and see we have:





    Vejamos como essa função funciona:
    » Este primeiro mov joga o valor do primeiro parâmetro em EAX
    » joga o valor de esi na pilha
    » move o valor de ecx em esi
    » pega o valor do address em ESI + 1CC e joga em ECX
    » Adiciona o valor do primeiro parâmetro em ECX
    » Joga o valor de ECX no address em ESI + 1CC

    Então, em delphi seria mais ou menos isso:

    procedure ModificarDinheiro(Valor : DWORD);
    begin
    ECX := ValorEm(ESI+$1CC) + Valor;
    ValorEm(ESI + $1CC) := ECX;
    end;


    OBS: Quando perdemos dinheiro esse valor é negativo

    Let's see how this function works:
    "This first mov plays the value of the first parameter in EAX
    "Plays and si the value of the stack
    »Moves the value in ecx esi
    »Takes the value of the address in ESI + 1CC and throws in ECX
    'Adds the value of the first parameter in ECX
    »Play the value of the address in ECX + ESI 1CC

    Then in Delphi would be more or less this:

    procedure ModificarDinheiro (Value: DWORD);
    begin
    ECX: = valorem (ESI + $ 1CC) + value;
    Valorem (ESI + $ 1CC): = ECX;
    end;
    NOTE: When we lose money this value is negative


    Então, só para confirmar, se NOParmos o código onde joga o valor de ECX em ESI + 1CC ele não vai perder dinheiro, vejamos se funciona:

    So just to confirm, if NOParmos code which throws the value in ECX + ESI 1CC it will not lose money, let's see if it works:



    Agora tentamos comprar algo.

    Now try to buy something.

    Pointer Scan

    Bem como eu disse, você não perderá dinheiro, então o address que queremos realmente esta em ESI + 1CC, voltemos à tabela e usaremos uma função muito útil do CE chamada PointerScan :

    Well as I said, you will not lose money, then we want to really address this in ESI + 1CC, back to the table and we'll use a very useful function called PointerScan CE:





    Salve a lista num local e você achará muitos pointers, para ver qual é o que você realmente quer, feche o jogo e abra-o novamente, selecione o processo novamente no CE e depois faça como fiz :

    Save the list in a place and you will find many pointers to see what you really want to close the game and open it again, select the process again in the EC and then do as I did:



    Você diminuirá um pouco o número de address, faça isso até sobrar poucos pointers, tipo menos que 1000, depois pegue sei lá, os 3 primeiros ou só o primeiro e tente reiniciar o programa e ver se ele apontará para o address certo, eu fiz isso aqui e achei este:

    You will decrease slightly the number of address, please do so to remain few pointers, like less than 1000, then take whatever, the first 3 or the first and only attempt to restart the program and see if it points to the right address, I did that here and found this:




    Se clicar duas vezes nele iremos encontrar:

    If you double click it will find:




    Utilizando os resultados

    Bom, achamos o pointer ! Agora como usá-lo ? Ele tem mais de um address, então, faremos o seguinte, se prestar atenção cada um desses address aponta para outro, logo se usarmos vários PDWORD's juntos, pode funcionar, então veja como faremos

    OBS: Este hl.exe siginifica o base address do processo que pode ser obtido pela função GetModuleHandle()

    Well, we found the pointer! Now how to use it? He has more than one address, then we will do next is watch each of these points to another address, then if we use several PDWORD's together, can work, then we will see how

    NOTE: This hl.exe siginifica the base address of the process that can be obtained by GetModuleHandle function ()


    PDWORD(PDWORD(PDWORD(GetModuleHandle('hl.exe')+ $11069BC)^ + $7C)^ + $1CC)^ := 16000
    Last edited by Vitrix Maggot; 2013-07-01 at 11:44 PM.
    I admire most other programmers not paid any dick!!

    Admiro outros Programadores mais nao pago pau pra nenhum !!


    Skype: Vitor Monteiro

  2. The Following User Says Thank You to Vitrix Maggot For This Useful Post:


Similar Threads

  1. [Tutorial] Pegando Address, Pointers de WYD
    By Vitrix Maggot in forum Programming Tutorials
    Replies: 1
    Last Post: 2013-07-17, 02:38 AM
  2. C++ Pointers
    By Vitrix Maggot in forum C/C++
    Replies: 0
    Last Post: 2013-04-14, 02:57 PM
  3. 1 Dynamic address and 3 levels of pointers but no base address found?
    By UncleFester in forum General Game Research
    Replies: 1
    Last Post: 2012-06-11, 02:17 AM
  4. [Useful] Pointers
    By Dwar in forum Battle of the Immortals
    Replies: 2
    Last Post: 2011-02-08, 05:49 PM
  5. [Help] Pointers for CE
    By SternKraft in forum Requiem Online
    Replies: 0
    Last Post: 2011-01-30, 03:44 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •