United Hackprogrammers Front(UHF)-CO2 Memory Tables

05/01/2007 02:05 joek#1
Memory Table System For CO2
If you write programs for CO2 that require memory addresses heres your chance to become client version independent.
Sick of continuously having to rebuild your programs?
well nows your chance to make your program client version independent,
just rewrite your code to read the memory addresses from the ma-global.inf file attached in this thread instead of hard wiring them into your code.
With this system all the user has to do is get the new memory table and bang its all the working again.

There's even some simple VB examples of how to access the data.
The table is a plain ASCII file that anyone can edit with notepad.
My thought is to have it stored in a central location on the users drive (e.g. the root of C drive) that way all the tools that use the system can easily find it.


Developers Usage Suggestions
For VB the best way to read it in a program is using the GetPrivateProfileString api(see following code snippet) that way the order of the fields doesn't matter and all you need to know is the name of the memory location that you want(e.g. CharName)
Note:The values in the tables have been prefixed with &H for VB, other languages may require you to replace this with 0x depending on the development language your using.

Sample Of Simple Memory Address Read In VB6
Code:
------- Main Code ------
  MemAddr(0) = MAread("CharName")
  MemAddr(1) = MAread("SrvName")
  MemAddr(2) = MAread("CharXP")
  MemAddr(3) = MAread("CharLV")
  MemAddr(4) = MAread("CharVP")

----- Module Code -----
Dim MemAddr(4)
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Function MAread&(KeyName$)
  Dim S$, F$, L&
  S = String$(20, Chr(0))
  F = App.Path & "ma-global.inf"
  If Dir(F) = "" Then F = "C:ma-global.inf"
  L = GetPrivateProfileString("MemAdd", ByVal KeyName$, "0", S, Len(S), F)
  MAread = CLng(Left$(S, L))
End Function


Memory Table Version Details

Latest Updates
5035 Rev 0 - Released 25 July 2008.


History
5028r1 - Released 21th June 2008
5022r1 - Released 30th April 2008
5020r0 - Released 6th April 2008
5018r0 - Released 18th March 2008
5017r0 - Released 15th March 2008
5016r1 - Released 14th March 2008
5016r0 - Released 7 March 2008
5007r0 - Released 30 December 2007
5006r0 - Released 21 December 2007
4354r0 - Released 16 August 2007
4353r2 - Released 05 August 2007
4351r5 - Released 24 July 2007
4347r0 - Released 06 June 2007


Credits
Big TY'z to everyone who has contributed to these tables(past and present) including:-
blinko, anantasia, giacometti, ntrceptr, DarkReaver, ZeRo-ToLeRaNcE, lazlo, Ulfius, *M*, nTL3fTy, warriorchamp, cyberside0, Jalan_Jalan, tanelipe, daveq, Alexios, IAmHawtness, Zeroxelli



Known Programs Using The UHF Tables(theres other so tell me what they are!!)
My co2m8 & co2hud
*M*'s Multi-Hack
ZoSo's Taskbar Button Renamer
ZT's Conquer Memory Reader DLL
TwistedIllusions's Exp Mod


Notes
Everyone feel free to contribute with addresses or corrections,etc. on this thread.
Let me know if your using the plug-in table system, that way your users will also know.
Support this system by using the file as directed and give credit.
If old tables are required please post request in this thread.

Download Table Here.
05/01/2007 02:48 inSertCoiN#2
...and heres a VB code with my example.

VB6.0 code


INI function declarations. Just put in a module and use in any project.
Quote:
'************************************************* ***
' INI Functions
'************************************************* ***

' INI DLL declarations
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Function GetFromINI(sSection As String, sKey As String, sDefault As String, sIniFile As String)
Dim sBuffer As String, lRet As Long
' Fill String with 255 spaces
sBuffer = String$(255, 0)
' Call DLL
lRet = GetPrivateProfileString(sSection, sKey, "", sBuffer, Len(sBuffer), sIniFile)
If lRet = 0 Then
' DLL failed, save default
If sDefault <> "" Then AddToINI sSection, sKey, sDefault, sIniFile
GetFromINI = sDefault
Else
' DLL successful
' return string
GetFromINI = Left(sBuffer, InStr(sBuffer, Chr(0)) - 1)
End If
End Function

' INI Returns True if successful. If section does not
' exist it creates it.
Function AddToINI(sSection As String, sKey As String, sValue As String, sIniFile As String) As Boolean
Dim lRet As Long
' Call DLL
lRet = WritePrivateProfileString(sSection, sKey, sValue, sIniFile)
AddToINI = (lRet)
End Function
'************************************************* ***
' End INI Functions
'************************************************* ***

MAdress.ini file content. Put in same folder with your program.
Quote:
[Adresses]
CHARACTERNAME=&H5120BC
ACCOUNTID=&H518478
CPS=&H512E28
VPPOINTS=&H512C4C

VB code.
Quote:

Dim CharName, AccountID, CPS, VPpoints As Long

Private Sub Form_Load()
CharName = GetFromINI("Adresses", "CHARACTERNAME", "", App.Path & "&#092;MAdress.ini")
AccountID= GetFromINI("Adresses", "ACCOUNTID", "", App.Path & "&#092;MAdress.ini")
CPS= GetFromINI("Adresses", "CPS", "", App.Path & "&#092;MAdress.ini")
VPpoints= GetFromINI("Adresses", "VPPOINTS", "", App.Path & "&#092;MAdress.ini")
End Sub
Dont think I wana steal your job mate. Just a sugestion. Anyway, I respect your idea. +k
This is how my tool worked at 1st (before public release) but since it was small size I didn't see any reason not to just rebuild the project since the users will have to download it anyway. I was not thinking ahead, like this idea about fixing all tools with 1 file :D
05/01/2007 03:14 joek#3
I'm only too glad you can contribute inSertCoiN, the more ppl that do the greater the chances of success this idea has.
05/01/2007 06:07 giacometti#4
Delphi already have that ini functions built in. Very easy to use.

Nice idea joek. You also could make it to store pokes for defeating DMA, as for example:

Code:
&#91;PokeValues&#93;
HPaddress=00401122
HPpoke=3e12a26499FF
Inventoryaddress=xxxxx
InventoryPoke=xxxx
etc..
05/01/2007 08:37 dchin1#5
i m a noob to it n i dunno wad it is =.="
anyway...+k for contributing
05/01/2007 12:11 alpha82#6
Service load:
0% 100%
File: ma_global.zip
Status:
OK
MD5 4eb61fb06f1305018616aba2c37c6830
Packers detected:
-
Scanner results
Scan taken on 01 May 2007 10:07:01 (GMT)
A-Squared
Found nothing
AntiVir
Found nothing
ArcaVir
Found nothing
Avast
Found nothing
AVG Antivirus
Found nothing
BitDefender
Found nothing
ClamAV
Found nothing
Dr.Web
Found nothing
F-Prot Antivirus
Found nothing
F-Secure Anti-Virus
Found nothing
Fortinet
Found nothing
Kaspersky Anti-Virus
Found nothing
NOD32
Found nothing
Norman Virus Control
Found nothing
Panda Antivirus
Found nothing
Rising Antivirus
Found nothing
VirusBuster
Found nothing
VBA32
Found nothing
05/01/2007 14:46 joek#7
[img]text2schild.php?smilienummer=1&text=4347 Memory Address Table' border='0' alt='4347 Memory Address Table' />

This is not complete as yet but many of the important address are in here.
Feel free to contribute additional addresses.

Now works for both my CO2hud and CO2m8 programs, anyone else using it let me know and I will include your program name on first page.

PS When this is more complete it will replace the 4346 version on the main page.
05/01/2007 14:47 joek#8
File is now at top of thread...
05/02/2007 04:37 KageKhan#9
Seems like youre missing a few addresses. Char Max HP = 01829C20, Char Current HP = 00C546E8... Wish I could help more but thats all I got.
05/02/2007 05:27 SBX1xyz#10
wow, nice idea man ill try it out :p
05/02/2007 06:12 DM2000#11
Great work.

Included into linklist (^^)

DM :star:
05/02/2007 06:22 joek#12
Quote:
Originally posted by DM2000+May 2 2007, 13:12--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (DM2000 @ May 2 2007, 13:12)</td></tr><tr><td id='QUOTE'> Great work.

Included into linklist (^^)

DM :star: [/b]

Cool TYVM :D

<hr>Append on May 2 2007, 06:29<hr><!--QuoteBegin--KageKhan
@May 2 2007, 11:37
Seems like youre missing a few addresses. Char Max HP = 01829C20, Char Current HP = 00C546E8... Wish I could help more but thats all I got. [/quote]
Yeah there are some addresses still missing and I will add them as I find them or if others contribute them.

Unfortunately those HP ones you supplied are dynamic which means they change and will need DMA defeats to be made static, I'm still waiting to see if TQ are gonna do another patch before I tackle that.
But ty anyway the thought was there.
05/02/2007 10:16 blinko#13
so what the hp address's arent dynamic anymore?
about time lol

<hr>Append on May 2 2007, 10:37<hr> i'll add a few to the list of you'd liek ot complete whats missing.


<hr>Append on May 2 2007, 11:48<hr> what clients are being used now cause i only use prog4mers multi client and he hasnt updated yet.
05/02/2007 13:05 inSertCoiN#14
Quote:
Originally posted by blinko@May 2 2007, 10:16
<hr>Append on May 2 2007, 11:48<hr> what clients are being used now cause i only use prog4mers multi client and he hasnt updated yet.
Heres a conquer multy for 4347 that I made for myselve. It has same memory adresses with progr4mers multy, so you can use it whyle programer don't update hes.
[Only registered and activated users can see links. Click Here To Register...]
05/02/2007 14:42 KageKhan#15
Quote:
Originally posted by joek+May 2 2007, 06:22--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (joek @ May 2 2007, 06:22)</td></tr><tr><td id='QUOTE'> <hr>Append on May 2 2007, 06:29<hr><!--QuoteBegin--KageKhan@May 2 2007, 11:37
Seems like youre missing a few addresses. Char Max HP = 01829C20, Char Current HP = 00C546E8... Wish I could help more but thats all I got.
Yeah there are some addresses still missing and I will add them as I find them or if others contribute them.

Unfortunately those HP ones you supplied are dynamic which means they change and will need DMA defeats to be made static, I'm still waiting to see if TQ are gonna do another patch before I tackle that.
But ty anyway the thought was there. [/b][/quote]
Damn... I didn't think something like that would be dynamic and I used it on 2 different clients I had running at the same time... O well, I tried. lol better luck next time.