Results 1 to 1 of 1
  1. #1
    Dwar is offline
    Veteran Dwar's Avatar
    Join Date
    2010 Mar
    Thanks Thanks Given 
    Thanks Thanks Received 
    Thanked in
    292 Posts
    Rep Power

    Making Warrock Hack without CheatEngine

    This tutorial is a guide for making hacks in warrock

    Here I will tell you how to make cheats for Warrock without needing an un-detected cheat engine.

    Finding the addresses - Hard
    You need two softwares to finish this tutorial:
    • TheMida unpacker
    • Odbg

    Both can be obtained threw Google.
    I used TheMidaUnpack from Okdodo.

    In the Themida Unpacker
    1. To start load up the themida unpacker.
    2. Press "open" and navigate add this file to the unpacker:
    3. [warrock path]/system/Warrock.exe
    4. press "unpack"
    5. Exit out of the unpacker.

    In Odbg
    1. Press File->Open (or F3)
    2. Open the file generated by the themida unpacker for my unpacker it was:
    3. [warrock path]/system/un_warrock_.exe
    4. You will get a message about breakpoints. Just press OK.
    5. Wait for it to load (loader bar at the bottom) do NOT press space.
    6. Do NOT go up to the top of the file. It will crash for some reason.
    7. Instead right click "Search for"->"All referenced text strings"
    8. Again wait.
    9. Double click on any of them. You should go back to the decoded data.
    10. Scroll up to the top of the now.
    11. Select the top row then go to the bottom and while holding <Shift> select the bottom row.
    12. This should select the entire document.
    13. Right click "Copy"->"To file" and save it somewhere easy to remember. I suggest putting the date somewhere in the name so you don't get confused when there is an update.
    14. Now everything is ready for you to start finding addresses.

    In Text Editor
    Here is a few addresses that are easy to find and good to use.
    Open up the .txt document. Sometimes notepad doesn't work. You may need to open it with another text simple editing software. When I say simple I mean don't use things like word or adobe you don't need text formating...

    Go to the top of the document and search down for this text:
    Down about 20 lines search for
    DD FLOAT 96.00000
    009B2E8C   . 0000C042       DD FLOAT 96.00000
    The address in this case is 009B2E8C
    There are many other addresses. To keep the tutorial short I have only listed one. Have fun looking for them.

    Side notes - It is possible to skip the creation of the txt file and just search for addresses using odbg, but I find it much easier to do using the text file, because odbg doesn't have a very good search feature.

    Writing the code - Easy
    Now you need to write the code for your injection.dll file.
    Software you need:
    • Visual C++ 2008 Express Edition - Can be found on Google.
    • An Injector.exe - Attached to this document.

    Open up visual c++ 2008 express edition and "File"->"New"->"Project..." select Win32, enter a name and location for the file.
    Once done, delete all the files in the project and add a new "New Item..." .cpp and name it main.
    Add the following code to the document:
    #include <process.h>
    #include <string>
    #include <stdio.h>
    #include <windows.h>
    #include "addresses.h"
    int cheatNow=0;
    float setSpeed=100.0f;
    void speed(){
     *(float*) ADR_Speed = setSpeed;
    void cheats(){
      Sleep(200);//Do not delete this. If you do, it will lag up your computer.
    BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
     if(dwReason == DLL_PROCESS_ATTACH){
      Sleep(1000);//Sleep a second and wait for warrock to load...
      _beginthread( (void(*)(void*))cheats, 0, NULL);//info );
     return TRUE;
    Not done yet... Now you need to add the most important part. The Addresses. You know the ones you found above?
    Now add a new item again and make a header file called addresses "addresses.h".
    In this file add the following code
    #define ADR_Speed 0x009B2E8C
    Be sure to replace the 009B8EFC with the address you found for speed above.
    Build your cheat with F7.
    Having Trouble?
    If you get a compiler error about stdafx.cpp you do the following:
    1. Press Alt+F7 to open up Properties
    2. Go to Configuration Properties->C/C++->Precompiled Headers
    3. There should be bold text next to "Create/Use Precompiled Header"
    4. Click on the bold text and an arrow on the right side appears, click on the arrow.
    5. Select "Not Using Precompiled Headers" and press OK
    6. Recompile With F7. If you still have errors, reply to this post.

    Testing and Releasing Your Code
    Copy the dll from [location of project]/Debug/name_of_dll.dll into the same folder as the injector.exe that you downloaded above and rename the dll to the same name as the exe. Double click on the exe, start warrock. Get into a game, press down F5 for a few seconds then run forward and hold down F7 until you find the speed you like.
    To Release your cheat to other people, in visual c++, at the top where it says Debug, press the arrow down and select Release and copy the file from [location of project]/Release/name_of_dll.dll

    I hope it was easy to follow. Everything should be pretty simple. Remember, you need to update most of your addresses every time there is an update. I will post a list of addresses on this website from time to time if you do not want to find them yourself. I have attached a few files that may come in handy in the creation of your cheats.
    Enjoy and let me know how your cheats work.

    Additional Cheats
    No Delay
    Open main.cpp
    Just before void cheats(){ add this code:
    BYTE DelayOld[2];
    void noDelay(){
     DWORD dwPlayerPtr = *(DWORD*)ADR_Playerpointer;
     if(dwPlayerPtr != 0){
      if(DelayOld[0]==0 && DelayOld[1]==0){
       DWORD dwProtect;
       VirtualProtect((void*)(ADR_NoDelay), 2, PAGE_EXECUTE_READWRITE, &dwProtect);
       memcpy(DelayOld,(void*)(ADR_NoDelay), 2);
       VirtualProtect((void*)(ADR_NoDelay), 2, dwProtect, NULL);
       *(float*) (dwPlayerPtr+OFS_NoRecoil1) = 0.0f;
       *(float*) (dwPlayerPtr+OFS_NoRecoil2) = 0.0f;
       *(float*) (dwPlayerPtr+OFS_NoRecoil3) = 0.0f;
       *(float*) ADR_NoSpread = 0.0f;
       const BYTE nop[2] = {0x90,0x90};
       DWORD dwProtect;
       VirtualProtect((void*)(ADR_NoDelay), 2, PAGE_EXECUTE_READWRITE, &dwProtect);
       memcpy((void*)(ADR_NoDelay), nop, 2);
       VirtualProtect((void*)(ADR_NoDelay), 2, dwProtect, NULL);
       *(float*) (dwPlayerPtr+OFS_NoRecoil1) = 0.000000001f;
       *(float*) (dwPlayerPtr+OFS_NoRecoil2) = 0.000000001f;
       *(float*) (dwPlayerPtr+OFS_NoRecoil3) = 0.000000001f;
       *(float*) ADR_NoSpread = 0.000000001f;
       const BYTE nop[2] = {166,67};
       DWORD dwProtect;
       VirtualProtect((void*)(ADR_NoDelay), 2, PAGE_EXECUTE_READWRITE, &dwProtect);
       memcpy((void*)(ADR_NoDelay),DelayOld, 2);
       VirtualProtect((void*)(ADR_NoDelay), 2, dwProtect, NULL);
    Go down some and find speed(); before add noDelay();

    Thank me if This helped you, or if you use this.
    by UnknownPK
    Please, post your questions on forum, not by PM or mail

    I spend my time, so please pay a little bit of your time to keep world in equilibrium

Tags for this Thread

Posting Permissions

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