 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
++METHOS I post too much
Reputation: 92
Joined: 29 Oct 2010 Posts: 4197
|
Posted: Sun Mar 06, 2016 4:09 pm Post subject: CE Request |
|
|
Based on this post..
| ++METHOS wrote: | The only thing that I do not like about CE's generator, is that it is limited, so it will fail if no unique signature can be found within a certain number of bytes.
GH*master's generator for his AAMaker is clever, in that, it uses wildcards for every byte, after the first or second byte on every line, so that you're only defining the jumps/moves etc.., allowing you to mitigate potential pattern breaks if/when the target is patched. The downside, of course, is that the signatures need to be much larger in order for a unique signature to be found, therefore, increasing the possibility that your signature may break if a major change is seen from any future patches.
Personally, I welcome any improvements. I think, if you really wanted to improve the signature generator, you would have it generate multiple signatures, such as the following:
1. Simple signature with no wildcards that begins above the point of injection.
2. Simple signature with no wildcards that begins at the point of injection.
3. Simple signature with no wildcards that begins below the point of injection.
4. Advanced signature with wildcards that begins above the point of injection.
5. Advanced signature with wildcards that begins at the point of injection.
6. Advanced signature with wildcards that begins below the point of injection.
Then, have all of these signatures 'bundled' in to a large, multi-signature that CE could scan until something was found, thus giving us a greater chance that our injection will succeed. In other words, instead of having 1 signature to rely on, we now have 6 different signatures, for the same injection point - all, automatically generated, of course.
| Code: | | AOBSuperScanModule(aob_ammo,game.exe,00000000000, 00000000000, 00000000000, 00xxxxxx0xxxxxxx0xxxxxxx, 00xxxxxx0xxxxxxx0xxxxxxx, 00xxxxxx0xxxxxxx0xxxxxxx) |
|
...expanding CE's signature generator to include multiple signatures (in addition to its current, default signature), as fall-back signatures may not be very practical (there are obvious downsides, I think). However, removing the 'byte restriction' to avoid nil signature results as well as including wildcard support for any bytes that are not specifically relating to machine instructions (e.g. mov, push, add, jmp, et al.) might be useful. At least, having an option for anyone that wanted it...perhaps, an option under settings...
| Code: | Remove byte limitation for AOB signatures. [ x ]
Use wildcards for AOB signatures. [ x ] |
Thanks.
|
|
| Back to top |
|
 |
++METHOS I post too much
Reputation: 92
Joined: 29 Oct 2010 Posts: 4197
|
Posted: Tue Mar 08, 2016 4:03 am Post subject: |
|
|
Giving this some more thought, something that may not be very practical at all, but could possibly eliminate any need for ever having to update any AOB signatures again, would involve an AOB scan that was dynamic.
It's a bit difficult for me to articulate because it's late here at the moment, but it would require a memory block of data to be stored as reference, inside of the script, that CE would automatically generate during script creation. Perhaps 100 bytes above the point of injection and 100 bytes below the point of injection (or, the entire sub-routine). CE could generate a basic AOB signature, but also have a large data block to refer to if the injection fails.
If the injection fails, CE could remove bytes on the end of the signature, or set them as wildcard values, one-by-one, until results are found. Then, it could compare the data blocks for those results, with the data block inside of the script, and choose the one with the highest percentage of similarity. If it could intelligently determine where the injection point needed to be, based on the original memory block, it could then read the bytes from the new memory block, and replace the old memory block and the old AOB signature by writing in the new data to the script.
Obvious downsides would be implementation, the possible inability to save the new signatures for trainers, the time to successfully perform all of the tasks...dramatically increasing wait times for script activation, the possibly large memory or disk usage, intelligent injection requirements etc..
|
|
| Back to top |
|
 |
++METHOS I post too much
Reputation: 92
Joined: 29 Oct 2010 Posts: 4197
|
Posted: Tue Mar 08, 2016 3:12 pm Post subject: |
|
|
Now that I've had some sleep, I realize that the need for intelligent injection requirements is moot, given that CE determines the injection location during the scan. So the hardest part may be writing a routine that can perform comparative analysis against multiple data blocks while determining which one is most similar to the base block.
Perhaps forcing CE to build more search results by shortening the original signature, byte-by-byte, until a minimum percentage of similarity is achieved between data blocks (e.g. 70%) would be necessary. This would eliminate the possibility of an incorrect injection when the key injection point has many changes within that small range of bytes, but not so much in the data block, as a whole. Forcing CE to rely on the data block, as a whole, would help to achieve the correct injection point. If CE was limited to a 3 byte signature to search from, for example, the results may be large, requiring a great deal of time. However, given the amount of time that the pointer scanner can take, it seems like it would be worth it, not having to fix signatures for people all of the time.
Perhaps including it as an option would be good for anyone that just wants to fix things manually. For example, if the injection fails, a window prompt asking if you would like CE to try to fix it would be good. An additional measure to avoid potential issues would be to have CE create a new script inside the table, so that reverting back to the old script could be possible, if needed.
If such a feature could be implemented inside of a trainer, all of the trainers that we publish could potentially be self-updating. A backup/copy of the trainer could be automatically created anytime a new signature is re-written in to the code in the event that the new signature is wrong.
|
|
| Back to top |
|
 |
++METHOS I post too much
Reputation: 92
Joined: 29 Oct 2010 Posts: 4197
|
Posted: Tue Mar 08, 2016 11:57 pm Post subject: |
|
|
| Regarding comparative analysis of data blocks, there is a decent 'compare' plugin written for notepad++ that can determine where data has changed and/or is missing, but can also see if data has shifted up/down, which would be integral for this kind of application.
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|