|
You last visited: Today at 16:11
Advertisement
CoMemory
Discussion on CoMemory within the CO2 Exploits, Hacks & Tools forum part of the Conquer Online 2 category.
12/08/2006, 21:18
|
#31
|
elite*gold: 0
Join Date: Aug 2005
Posts: 499
Received Thanks: 132
|
Exactly inSertCoiN
there is a map name address in the Conquer Memory however i wanted to create something for along the line's of my own map name's
there for (using your example)
ElseIf pH.ID = "1050" Then
rtnID = "Life Tactic" 'logicaly asumed
Else
MsgBox("ph.ID not = 1042-1050")
End IF
if the value of the address ( Map ID ) is 1050 it'll display Life Tactic, however if it happen's not to be in the list of ID's that i did take time to gather it return's the Map in ID form, was also what i used ot figure out the ID's
also @ Bud_wis_er_420 to register the prjXTAB.ocx there should be in the project folder a PRJXTAB-REGISTER.BAT file, the code in it can be viewed if you open it in notepad if you don't liek the idea of BAT files. the command line code in it is REGSVR32.EXE prjXTAB.ocx
double click it and it'll register the .ocx file. since i used the control to make an tabbed dialog not onoy IN the program (compiled exe) but also in the project it need's registering.
the Next update i throw up will have it in usercontrol form so no registering will be needed.However unlike the VB6.0 class files the DLL file WILL need registering.
which i've came up with a rather neat soultion for that Resource .res files. just create a .res file with the coMemoryRead.dll in it, and then using LoadResData you can load the resource and have it automatically copied to the folder locations and registered, then have it deleted when the form unloads, it'll just load the data and register it each time its opened, so you'll never have to include a DLL file WITH the actually exe.
click add-in's at the top and on the add in manager add the VB Resource Editor,
then put a check in the Load/Unload checkbox and then create a new .res file
Dim fNum as integer
Dim DataArray() as byte
fNum = freefile
DataArray() = LoadResData ( id, type) - i used 1, "CUSTOM"
Open app.path & "\coMemoryRead.dll" for binary as #fNum
Put ,#fNum,1,DataArray()
close #fnum
then have it use a SHELL "C:\WINDOWS\System32\REGSVR32.E XE /s coMemoryRead.dll" piece and it'll load the res file and then register it no need for handing out the dll file with the tool ^^ it'll already come included and compiled
New Update coming soon, removed the annoying example below
instead of text1 = Char.Money(text1) to return the rtnID to the textbox
now uses Text1 = Char.money flat out and simple
same with the client side changes i've done, both will be added to the project and the DLL project and compiled, also adding in the load resource data piece for those who wish to code with the dll and distribute within thier compiled applications
And some sound playing functions for alert's and what not.
and Eventually a new client loop to detect multiple clients, at the moment it only red's the active client, so if you alt+tab and switch to another client thats open the tool will read the window in focus.
apologies for such a big post
|
|
|
12/08/2006, 22:26
|
#32
|
elite*gold: 0
Join Date: Aug 2006
Posts: 100
Received Thanks: 1
|
Thank you very much that worked
I've taken a look at you code and I think after some time figuring out how it all works it will be very helpfull. Now I assume if I wanted to make my wn project I would need the "&H8000s"(not sure what to call that ,but for now intill im corected I'll call it the memory id). I use this id to find if a blackname player in my area. I can use the code, which I'll write my own once I c how to do it, in the coMemoryRead.vb class. Corect me if I'm wrong anywhere please. But one question I have is, how do you get the memory id's you have listed under coMemoryFlags.
Public Const FLAG_BLACKNAME As Short = &H8000s ' person is blacknamed
Note: I will not be s bold as to copy and use any of the code you made. Fisrt I think it rude without your permission but I also think it a better learning experience to write my own code. I assume you don't mind though if I use your memory id's that you've obtained. Although the ideas I get for my code will come from yours. And for any future bots I make, I will add credit to you for helping me.
btw I think you deserve +k. you have been very helpfull
|
|
|
12/09/2006, 03:36
|
#33
|
elite*gold: 0
Join Date: Aug 2005
Posts: 499
Received Thanks: 132
|
Quote:
Originally posted by Bud_wis_er_420@Dec 8 2006, 22:26
Thank you very much that worked
I've taken a look at you code and I think after some time figuring out how it all works it will be very helpfull. Now I assume if I wanted to make my wn project I would need the "&H8000s"(not sure what to call that ,but for now intill im corected I'll call it the memory id). I use this id to find if a blackname player in my area. I can use the code, which I'll write my own once I c how to do it, in the coMemoryRead.vb class. Corect me if I'm wrong anywhere please. But one question I have is, how do you get the memory id's you have listed under coMemoryFlags.
Public Const FLAG_BLACKNAME As Short = &H8000s ' person is blacknamed
Note: I will not be s bold as to copy and use any of the code you made. Fisrt I think it rude without your permission but I also think it a better learning experience to write my own code. I assume you don't mind though if I use your memory id's that you've obtained. Although the ideas I get for my code will come from yours. And for any future bots I make, I will add credit to you for helping me.
btw I think you deserve +k. you have been very helpfull
|
well thanx mate and those &H8000's as you called them are constant flag's
in the coMemoryFlags Module file, Public Const FLAG_BLACKNAME = &H8000
that's just to write to the memory
for example
(in my code i made a
Public type proc_hanlder
hWnd as long
pID as long
pHandle as long
ID as long
end type
Public p as proc_handler )
but you can use
Class Module
Public Function blackname()
P.hWnd = FindWindow(vbNullString, COWiN)
GetWindowThreadProcessId P.hWnd, P.pID
P.pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, P.pID)
WriteProcessMemory P.pHandle, ByVal &H4FE42C, FLAG_BLACKNAME, 4, 0&
CloseHandle P.pHandle
End Function
where FLAG_BLACKNAME = &H8000
Form1
Declarations:
dim Char as ActionType
Private Form_Load()
Set Char = new ActionType
end sub
Private sub Command1_Click()
Char.BlackName ' Makes the char black name on call
End Sub
i use the
Private Sub Command1_Click()
Char.Normal
Char.Blackname
End Sub
this makes it so when u click the button it sets any changed values to normal effect
THEN sets the new one so no error's are a result.
|
|
|
12/09/2006, 03:42
|
#34
|
elite*gold: 0
Join Date: Mar 2005
Posts: 251
Received Thanks: 115
|
I've checked all tactics and all ID's are corect.
You will have much more work to detemen black names because 1st of all thats dinamic memory, that changes the memory adress everytime. All memory adresses in blinko's code are static.
If some author goes up with the code public you can freely use it. Just make shure that you mention him in credits and try to explain wich code is he's. Thats the point of making it public, to share he's work with others. I use blinko's clas module file in some of my project and if I go public with it i'll make shure he'll be credited for that.
|
|
|
12/09/2006, 05:16
|
#35
|
elite*gold: 0
Join Date: Aug 2006
Posts: 100
Received Thanks: 1
|
I'm confused. This is a little advanced for my skill lvl of VB. Perhaps you or someone can give me a simple example to help me better understand how the reading and write to the memory. For starters I don't even know how to send anything to the CO process. I need a simple but detailed example mabye with some coments.
For example
1: Make new project
2: add a button
3: insert this "code " in button code
4:add new item:class
5: add these funtions to class "code"
6: and so forth
Just someting simple if I see how to read and then write anything a jump, blue flashing, what evers easiest for you. btw thx for all the help so far.
|
|
|
12/09/2006, 09:22
|
#36
|
elite*gold: 0
Join Date: Mar 2005
Posts: 251
Received Thanks: 115
|
Quote:
Originally posted by Bud_wis_er_420@Dec 9 2006, 05:16
Just someting simple if I see how to read and then write anything a jump, blue flashing, what evers easiest for you. btw thx for all the help so far.
|
Well thats too harcore for me 
There are only few people that can do that here. (not to say 1-2  )
I would also like to lean that. If you can read CO memory the posabilityes are widly opened.
|
|
|
12/09/2006, 19:30
|
#37
|
elite*gold: 0
Join Date: Aug 2006
Posts: 100
Received Thanks: 1
|
Hmm so mabye i am getting ahead of my self. I guess I need to start off smaller get used to VB a bit more make a few pixel based bots and learn mroe as I go. I do that alot, get ahead of myself.
|
|
|
12/10/2006, 15:57
|
#38
|
elite*gold: 0
Join Date: Aug 2005
Posts: 499
Received Thanks: 132
|
Quote:
Originally posted by Bud_wis_er_420@Dec 9 2006, 05:16
I'm confused. This is a little advanced for my skill lvl of VB. Perhaps you or someone can give me a simple example to help me better understand how the reading and write to the memory. For starters I don't even know how to send anything to the CO process. I need a simple but detailed example mabye with some coments.
For example
1: Make new project
2: add a button
3: insert this "code " in button code
4:add new item:class
5: add these funtions to class "code"
6: and so forth
Just someting simple if I see how to read and then write anything a jump, blue flashing, what evers easiest for you. btw thx for all the help so far.
|
Well for starters you'll need to open Visual Basic 6
Then you'll if it hasn't asked you at startup create a new project
Click File > New Project (do not save the previous one)
Once it's open just go to the properties tab to the right hand side and right click it and add the coMemoryFlags module, the coMemoryRead class file, the ActionType Class file if it's there (dunno since i haven't updated yet)
And the APIS module.The APIS module and the coMemoryRead class file are the main sources.as well as the coMemoryFlags for the client side changes.
after you've added the class and module file's, start by doule clicking the form.
the script will set to Private Sub Form_Load()
starts there.
Head up to the declaration's and create and set the Object.
Dim Char as coMemoryRead
Private Sub Form_Load()
Set Char = new coMemoryRead
End Sub
you're set.
Throw in a timer with a interval of 100. and enable it.
under Timer1_Timer() set anything you wish the memory to read.
example.
Add a textbox to the form "Text1"
then:
Private Sub Timer1_Timer()
Text1 = Char.CharName
End sub
it'll read the character's name from the start. However a few of the values such as EXP will cause a bug and make it error and cancel out. haven't fixed that yet.
the actual memory reading is in the coMemoryRead class file.So you won't need anything extra to read memory.
Code:
Declarations:
Dim rtnID as Long
Private Type proc_handler
pID as long
hWnd as long
pHandle as long
ID as long
End Type
Private ph as proc_handler
Function's:
Public Function CharName()
Dim IDS(0 To 15) As Byte
Dim ChrName As String
Dim index As Integer ' can be integer or long.
pH.hWnd = FindWindow(vbNullString, COWiN)
GetWindowThreadProcessId pH.hWnd, pH.pID
pH.pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pH.pID)
ReadProcessMemory pH.pHandle, ByVal &H4FE484, IDS(0), 16, 0& <--read's the value of the character name into bytes IDS(0 to 15) which is 1-16 really.16 Max character's.
For index = 0 To 15
ChrName = ChrName & Chr(IDS(index))
Next index
rtnID = ChrName
If rtnID = "" Then
CharName = False: Exit Function
End If
CharName = rtnID
CloseHandle pH.pHandle
End Function
that's a code piece for reading the character name and converting it to Ascii character's.
or you can do a Text1.Text = Char.Level and read the character's level, VP,Stamina,EXP ect..need some more info just hit me up.
**will be updating soon**
|
|
|
12/11/2006, 01:07
|
#39
|
elite*gold: 0
Join Date: Aug 2006
Posts: 100
Received Thanks: 1
|
Quote:
Originally posted by blinko
Well for starters you'll need to open Visual Basic 6
Then you'll if it hasn't asked you at startup create a new project
Click File > New Project (do not save the previous one)
Once it's open just go to the properties tab to the right hand side and right click it and add the coMemoryFlags module, the coMemoryRead class file, the ActionType Class file if it's there (dunno since i haven't updated yet)
And the APIS module.The APIS module and the coMemoryRead class file are the main sources.as well as the coMemoryFlags for the client side changes.
after you've added the class and module file's, start by doule clicking the form.
the script will set to Private Sub Form_Load()
starts there.
Ok followed you up until this point. what do you mean Head up the declaration's and create and set the Object
Code:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Here is my form1 code. Do I place the below code within the above code? Is that what u mean?
Code:
Private Sub Form_Load()
Set Char = new coMemoryRead
End Sub
Like this:
Code:
Public Class Form1
Dim Char As coMemoryRead
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Char = New coMemoryRead
End Sub
End Class
Head up to the declaration's and create and set the Object.
Dim Char as coMemoryRead
Private Sub Form_Load()
Set Char = new coMemoryRead
End Sub
you're set.
Throw in a timer with a interval of 100. and enable it.
Ok did this
under Timer1_Timer() set anything you wish the memory to read.
example.
Add a textbox to the form "Text1"
then:
Private Sub Timer1_Timer()
Text1 = Char.CharName
End sub
it'll read the character's name from the start. However a few of the values such as EXP will cause a bug and make it error and cancel out. haven't fixed that yet.
the actual memory reading is in the coMemoryRead class file.So you won't need anything extra to read memory.
Code:
Declarations:
Dim rtnID as Long
Private Type proc_handler
pID as long
hWnd as long
pHandle as long
ID as long
End Type
Private ph as proc_handler
Function's:
Public Function CharName()
Dim IDS(0 To 15) As Byte
Dim ChrName As String
Dim index As Integer ' can be integer or long.
pH.hWnd = FindWindow(vbNullString, COWiN)
GetWindowThreadProcessId pH.hWnd, pH.pID
pH.pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pH.pID)
ReadProcessMemory pH.pHandle, ByVal &H4FE484, IDS(0), 16, 0& <--read's the value of the character name into bytes IDS(0 to 15) which is 1-16 really.16 Max character's.
For index = 0 To 15
ChrName = ChrName & Chr(IDS(index))
Next index
rtnID = ChrName
If rtnID = "" Then
CharName = False: Exit Function
End If
CharName = rtnID
CloseHandle pH.pHandle
End Function
In the end I have this for my form1 code
Code:
Public Class Form1
Dim Charr As coMemoryRead
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Charr As coMemoryRead
Charr = New coMemoryRead
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
TextBox1 = Charr.CharName
End Sub
End Class
But i get the error on my
Code:
TextBox1 = Charr.CharName
Squiggly blue line under Charr.CharName. Oh and btw i change char to charr because my VB 2005 dont accept a var of that name. Idenifier not valid here the error i get: Argument not specified for parameter 'rtnID' of 'Public Funtion CharName(rtnID As String) As Object
What do I do here? Is this because I don't have the ActionType Class file.
that's a code piece for reading the character name and converting it to Ascii character's.
or you can do a Text1.Text = Char.Level and read the character's level, VP,Stamina,EXP ect..need some more info just hit me up.
**will be updating soon**
|
|
|
|
12/11/2006, 02:29
|
#40
|
elite*gold: 0
Join Date: Aug 2005
Posts: 499
Received Thanks: 132
|
yeah cause Char is a control itself i believe.In all honesty.
My Class Files and Modules was made using VB6.0, and the DLL was too.And i've tested the DLL working's in the VB.NET using Visual Studio 2005 Pro.
The DLL work's great in both vb6.0 and vb.net, however i do not use vb.net very often and am not as skilled with it though it's pretty much the same.The Class fiels if redoen should work.
I'll work a little application with vb.net and send the sources through here for ya ^^
|
|
|
12/11/2006, 03:03
|
#41
|
elite*gold: 0
Join Date: Aug 2006
Posts: 100
Received Thanks: 1
|
OMG that would be great!!! Im aving some trouble getting it to work trying to Convert it too
|
|
|
12/12/2006, 18:25
|
#42
|
elite*gold: 0
Join Date: Aug 2005
Posts: 499
Received Thanks: 132
|
Sorry due to the new Patch this project is on hold till i find more memory Values. Sorry ppl's
so far i've recovered the spouse,coords,str,vit,agi,spirit,pk points,lvl,guild name,map name (both names ) example soon.
|
|
|
12/13/2006, 08:21
|
#43
|
elite*gold: 0
Join Date: Jan 2006
Posts: 167
Received Thanks: 57
|
How did you ever find all 130 values for exp levels?
|
|
|
12/13/2006, 08:25
|
#44
|
elite*gold: 0
Join Date: Aug 2005
Posts: 499
Received Thanks: 132
|
Quote:
Originally posted by Ulfius@Dec 13 2006, 08:21
How did you ever find all 130 values for exp levels?
|
actually i didn't have to Thanks to Peach for releasing the CoMemory source, there was a piece of code for that in there i just had to modify it to Visual Basic.
so far i've recovered all memory values except the experience, the stamina..and i think's thats it till i come across something else.
|
|
|
12/13/2006, 09:12
|
#45
|
elite*gold: 0
Join Date: Jun 2006
Posts: 97
Received Thanks: 44
|
I like your dedication to the project and helpfulness to people that are curious and wish to help. Right on. Keep that up.
|
|
|
Similar Threads
|
CoMemory API
11/19/2006 - Conquer Online 2 - 53 Replies
ok, a while ago i started with making an API to read memory,
Actually now everybody with basic programming knowledge can make bots in VB.Net and C#.
Its an dll you import and you can use it, i added an help file so everybody can see the possibilities.
I hope people will post suggestions.
Im going on vacation tomorrow, so when im back i see the suggestions and finish it.
Happy Programming!
Edit: Err i mention, that the download didnt work lets try this. (YES it works)
|
All times are GMT +1. The time now is 16:11.
|
|