| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| Turtle Advanced Cheater
 
 ![]() Reputation: 7 
 Joined: 25 Jul 2004
 Posts: 85
 
 
 | 
			
				|  Posted: Thu Jan 05, 2006 5:41 am    Post subject: The really ghetto way to resolve DMA |   |  
				| 
 |  
				| Let's say you find the value for ammo. 
 Ammo's value = 20
 
 The problem is that there will probably be many other instances in the game's ram of a value of "20". You will probably have to do multiple sub-searches in order to filter out the fake ones.
 
 There are however some values in a game's ram that are so unique, that there is often only one instance of them in a given situation. This means that if someone were to search for such a value, it should only require one initial search without any further filtering, because they should only get 1 result.
 
 How can this be used to quickly find ammo's value? Well, let's say that this unique value was very close to the value for ammo, for example, say it was a distance of 8 before the ammo value.
 
 Then all you need to do is the one initial search for the unique value, and then add 8 to whatever address that yields, and you should have the address for the ammo value.
 
 You will have to investigate the values that are near the ammo value to determine if any of them are unique in the game's ram. One tip would be to look for values that are 32bit floats, and then convert those floats to unsigned longs for when you test them in the memory searcher. If the initial search only yields one result, then you may have a useable unique value. Just take note of its address, and distance from the ammo's value. Converting to 'unsingned long' for the test search is optional, it's up to you.
 
 The benefit of 32 bit floats is that their values are often unique due to their decimal precision.
 
 
 Can this be integrated into a trainer? I'm not sure yet. The trainer would only have to perform the initial search, and then add the distance [8] to that address, it wouldn't have to store any filtering data from secondary searches. The search range could also be modified to facilitate faster searches.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| xeratal Advanced Cheater
 
 ![]() Reputation: 1 
 Joined: 05 Nov 2005
 Posts: 93
 
 
 | 
			
				|  Posted: Fri Jan 06, 2006 7:57 am    Post subject: |   |  
				| 
 |  
				| Not possible in a trainer. Just use CE... Ammo address - 00400000
 Unique address - 00400100
 CE Table with these 2 address, search for the unique value and find the offset changes.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| UberNoob Master Cheater
 
  Reputation: 0 
 Joined: 29 Dec 2005
 Posts: 365
 Location: You should know...
 
 | 
			
				|  Posted: Fri Jan 06, 2006 6:18 pm    Post subject: |   |  
				| 
 |  
				| Search for pointer option. problem solved. xD _________________
 
 ..  ___
~(o.O)~
 .. (.....)
 ... 1   1
 
 "SHA ZAAM" (and other variations of it) ARE MY WORDS! WTF, DON'T USE IT! z0mg
 
 
  	  | Dark Byte wrote: |  	  | Xentar, WTF DID YOU DO TO YOUR DISASSEMBLER ? | 
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Zhoul Master Cheater
 
 ![]() Reputation: 1 
 Joined: 19 Sep 2005
 Posts: 394
 
 
 | 
			
				|  Posted: Fri Jan 06, 2006 11:20 pm    Post subject: |   |  
				| 
 |  
				| So - instead of searching for the value, why not find the code that writes to that address, then, when you restart the game, use that code, to find out what addresses that code writes to and fire thyn weapon? 
 Also, we all remember one true ghetto way to make your own pointers:
 http://forum.cheatengine.org/viewtopic.php?t=4606
 
 Simple - and usable in a trainer.
 
 FYI - you're on the right 'track' over-all
  Your suggestion is exactly how I started =) |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| bitterbanana Cheater
 
 ![]() Reputation: 0 
 Joined: 28 Nov 2004
 Posts: 44
 
 
 | 
			
				|  Posted: Mon Jan 09, 2006 2:26 pm    Post subject: |   |  
				| 
 |  
				| Actually, I like this guy's thinking.  You can do this in a trainer easily.  Just use ReadProcessMemory to scan through a process until you hit your desired unique value.  Then add your offset to the address. |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Turtle Advanced Cheater
 
 ![]() Reputation: 7 
 Joined: 25 Jul 2004
 Posts: 85
 
 
 | 
			
				|  Posted: Mon Jan 09, 2006 9:55 pm    Post subject: |   |  
				| 
 |  
				|  	  | bitterbanana wrote: |  	  | Actually, I like this guy's thinking.  You can do this in a trainer easily.  Just use ReadProcessMemory to scan through a process until you hit your desired unique value.  Then add your offset to the address. | 
 
 Thanks.
 
 How big would the trainer have to be though?
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Zhoul Master Cheater
 
 ![]() Reputation: 1 
 Joined: 19 Sep 2005
 Posts: 394
 
 
 | 
			
				|  Posted: Tue Jan 10, 2006 12:31 am    Post subject: |   |  
				| 
 |  
				|  	  | Turtle wrote: |  	  | Thanks. How big would the trainer have to be though?
 | 
 
 The trainer itself wouldn't have to be very big at all, but back when I thought this would be a good idea, VB wasn't cuttin it
  Scanned Wayyyyy toooooooo slooooooooowwww...  I never did try it in any other language though.  Moved on to actually finding proper pointers and learning assembly the right way (imho)   
 "I invented nothing" - Don Juan
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| me Grandmaster Cheater
 
  Reputation: 2 
 Joined: 24 Jun 2004
 Posts: 733
 Location: location location
 
 | 
			
				|  Posted: Mon Jan 23, 2006 10:15 pm    Post subject: |   |  
				| 
 |  
				| well maybe you can use the unique varible+offset with auto assemble thus--> 
 lets use the imaginary varible -->  cheech_and_chong -->as an example,
 
 ammo = cheech_and_chong+up_in_smoke
 
 health = cheech_and_chong+nice_dreams
 
 ===================
 well you know what I mean,
 use the string as the baseline for your offsets .
 
 (as long as they are floating about in the same modules ha ha ha)
 
 the way is there to be found, turtle is on the right track, db pointed this way to me and others some time ago,,
 
 
 /*editing again...
 cheat engine had the modules sussed out,,,,,...
 you put in the (module\dll) + the offset,
 
 so (module\dll)+string+offset
 
 editing madness it's carpets */
 
 
 
 
 
 
 
 
 
 .
 _________________
 
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  |