GithubHelp home page GithubHelp logo

fenix01 / cheatengine-library Goto Github PK

View Code? Open in Web Editor NEW
250.0 16.0 78.0 45 MB

Cheat Engine Library is based on CheatEngine a debugger and coding environment particularly aimed at games, but can also be used for other purposes like debugging applications and used in schools for teaching how computers work

Pascal 96.89% C# 1.98% C++ 1.08% Batchfile 0.05%

cheatengine-library's Introduction

cheatengine-library

@contact : [p-yohann][@][hotmail.fr]

Cheat Engine Library is the first open source library based on Cheat Engine a powerfull memory editing software. You may found the original software here http://cheatengine.org/

The first goal of this project is to give you the ability to make your own software with advanced features like auto assemble, dll injections, memory scanner etc. As you know, Cheat Engine doesn't provide any library and it could be very frustrating for a developer. This library is supported for both platform (x86/x64) and it is usable with popular programming languages (c#, c++, delphi).

scanner_c

Features :

  • manage a virtual cheat engine table
  • add an address manually
  • add an autoassemble script
  • activate, desactivate, freeze and unfreeze any address or script
  • inject auto assemble script
  • supported symbols :
    • ALLOC
    • DEALLOC
    • LABEL
    • DEFINE
    • REGISTERSYMBOL
    • UNREGISTERSYMBOL
    • INCLUDE
    • READMEM
    • LOADLIBRARY
    • CREATETHREAD
  • Scan the memory to find specific addresses
  • Scan type :
    • Exact value
    • Smaller than
    • Bigger than
    • Value between
    • Unknown initial value
    • Increase value
    • Increase value by
    • Decrease value
    • Decrease value by
    • Changed value
    • Unchanged value
  • Value type :
    • Binary
    • Byte
    • 2 Bytes
    • 4 Bytes
    • 8 Bytes
    • Float
    • Double
    • String
  • Memory scan options :
    • Start address, Stop address
    • Writable, Executable, CopyOnWrite
    • Fast scan, Align and Not Align
    • Unicode, Case Sensitive

What's new ?

Please refer to the CHANGELOG file to get informations about the last release

Where should I begin ?

  1. If you need an turnkey solution you should download :
  1. If you need your own solution :
  • Download Lazarus 64 bits or Lazarus 32 bits
  • Copy the library and the dll directory

Do you provide a documentation ?

Yes, I made a description of the cheat engine library apis. Follow this link https://github.com/fenix01/cheatengine-library/wiki/Guideline

cheatengine-library's People

Contributors

fenix01 avatar mattangus avatar thomasthelen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cheatengine-library's Issues

fenix01, please help me

I have write code like below, but iCountAddressesFound() still return 0.
But when i try to use cheatengine, it show 27 found address.
Why is that?

bool sSCAN::FirstScan() {
bool _stat= false;
BSTR l_pid= ::SysAllocString(L"000002F0");
TScanOption scanOption= soExactValue;
TVariableType variableType= vtDword;
TRoundingType roundingtype= rtRounded;
BSTR scanvalue1= ::SysAllocString(L"100");
BSTR scanvalue2= ::SysAllocString(L"");
BSTR startaddress = ::SysAllocString(L"$00000000");
BSTR stopaddress = ::SysAllocString(L"$7fffffff");
bool hexadecimal= false;
bool binaryStringAsDecimal= false;
bool unicode= false;
bool casesensitive= false;
TFastScanMethod fastscanmethod= fsmNotAligned;
BSTR fastscanparameter= ::SysAllocString(L"4");

    iOpenProcess(l_pid);
    iInitMemoryScanner((HWND)GetCurrentProcess());
    iConfigScanner(scanInclude, scanDontCare, scanExclude);
    iFirstScan(scanOption, variableType,
        roundingtype, scanvalue1, scanvalue2,
        startaddress, stopaddress, hexadecimal, binaryStringAsDecimal,
        unicode, casesensitive, fastscanmethod,
        fastscanparameter);
    stat= 2;

    _exit:
    ::SysFreeString(l_pid);
    ::SysFreeString(scanvalue1);
    ::SysFreeString(scanvalue2);
    ::SysFreeString(startaddress);
    ::SysFreeString(stopaddress);
    ::SysFreeString(fastscanparameter);
    return _stat;
}

aobscanmodule script not working

aobscanmodule script not working?
please give support.

[ENABLE]
aobscanmodule(INJECT,test.exe,44 8B 80 34 01 00 00 EB) // should be unique
alloc(newmem,$1000,"test.exe"+1BBB3E3)
label(code)
label(return)

newmem:

code:
  mov r8d,[rax+134]
  jmp return

INJECT:
  jmp newmem
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db 44 8B 80 34 01 00 00
unregistersymbol(INJECT)
dealloc(newmem)

Invalid expression inside Connector.cs

The following block of code inside loadEngine() is not functional:

#if _WIN64
libInst = LoadLibraryW("ce-lib64.dll");
#else
libInst = LoadLibrary("ce-lib32.dll");
#endif

There is no predefined _WIN64 symbol in C#, therefore the first condition will always evaluate to false. This results in the method always loading the 32-bit dll.

Loading cheat engine library

Where does one find the ce-lib32.dll / ce-lib64.dll ?

I tried to use the c# memory scanner example, but the library could not be loaded, probably because the dll is not in the executable folder.

Searched this repository and the cheat engine source code for *.dll but could not find any that looked familiar.

Thanks.

Edit: nevermind, found it in /releases

C# ISetValue / IGetValue

Hello, I am having some difficulties figuring out index/id parameter for the ISetValue/IGetValue functions.

I was mostly experimenting with
(0 + zero based result index)
and
(-511 + zero based result index)

Example test usage in Scanner solution :
lib.iSetValue(index, "375", false);

Visual Studio does not catch any exception but app crashes, since it originates in libraries.

Crash report:

Problem signature:
Problem Event Name: APPCRASH
Application Name: Scanner.vshost.exe
Application Version: 14.0.23107.0
Application Timestamp: 559b788a
Fault Module Name: ce-lib64.dll
Fault Module Version: 1.2.0.0
Fault Module Timestamp: 00000000
Exception Code: c0000005
Exception Offset: 0000000000065dea
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1060
Additional Information 1: f97f
Additional Information 2: f97f2be2f101da6d3ae22f6d4820bdcc
Additional Information 3: 1037
Additional Information 4: 10376f909f5019b57f98c6e8b818354c

How can I give value to registersymbol address?

Hi,
How can I assign value to registersymbol from library?
I tried as below but failed.
I don't want to do value assignment with script.

Script:

alloc(testad,8)
registersymbol(testad)

C# code:

lib.iAddAddressManually("testad", TVariableType.vtDword);
lib.iSetValue(0,"100",false);

How to use Array of byte option?

Hello!
I am a beginner developer interested in your source.
but, I understand only about half of your lib.
I am using CheatEngine's Array of bytes (scan type: Search for this array)
I want to use the feature.
but, you could not find it in your example.
I think use iProcessAddress, it's right?

C# connector has a problem loading the .dll (Connector.cs line ~149)

Well, to load de the library you are using:

        #if _WIN64
        libInst = LoadLibraryW("ce-lib64.dll");
        #else
        libInst = LoadLibrary("ce-lib32.dll");
        #endif

I do not know why it does not work, but you can avoid using preprocessor with this code:

        if(System.Environment.Is64BitOperatingSystem)
            libInst = LoadLibraryW("ce-lib64.dll");
        else
            libInst = LoadLibrary("ce-lib32.dll");

Which wont give problems to the compiler.

Sorry for my Eng, not native.

Wrong string length

Need to fix a small issue with the memory scanner example.
IInitFoundList should not take GetBinarySize in parameter for a string. To fix this issue, the field should be divide by 8 and by 16 for unicode.

How to use Pointer

How to use pointer and offsets from Cheat Engine? I want to change value by it.

hi

how can i make him have process list

if i press process list it will error

您好!

Hello author, I am using your cheat-engine-master, I found that memory scanning is not working well during the process of using, and an exception will be prompted when scanning. I don't know how to solve it, your Mini CE is very simple and easy to use, and the CE version 7.5 has been released, but it is too bloated, I hope you can continue to optimize it, thank you very much!

Just want to ask,

I dont know if this is the right place to ask, I cannot reach you on the forum, and I still don't know things in github, but can you I add you on skype or facebook?
Had some questions regarding the functions, and btw this is really great, hope to have C# version of the DLL...

2 Listview

How to do this with 2 ListView getting the address?

Adding an address as a pointer with an offset

I know this isn't maintained, but I'm hoping someone sees this and can answer.

How can I call iAddAddressManually and successfully specify a Pointer with an offset, as I can do in the Cheat Engine application? Is there some kind of syntax for this or is there a better way? Also I'm using a registeredsymbol, which does work as an address directly, but what I'd like is to make it a pointer so that my address is the value of my symbol + an offset.

ex.)
Address: HP_BaseAddress, Value: 029A4674
Address: HP_BaseAddress+78, Value: 100 (address is actually 29A46EC)

outdated

i wonder if there is an up to date version of ce library😔
this one does the job, but still missing some feature and supported symbols

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.