PW Offset Finder

09/16/2012 14:51 No0oB#1
After 2 years i thought i could make a remake of my Offset Retriever
(and maybe it was because i was totally bored last weekend :/ )

I made it a bit more dynamic for other clients (indo, malaysia, rus aso.) by adding support for loading own regex files it can use to find addresses or offsets.

regex files:
it comes with a example RegEx.txt file which is commented and should explain most things
to create a file for another pw client just add a new txt file to the folder where the offset_finder.exe is located and name it "PW Indo.txt" or "Whatever.txt" ^^

The "Default" regexs are defined in the script/exe and they are for PWI but could also work with other clients ^^

*edit: i forgot to say that it can also be used for other games/programms ^^

*edit
The including RegEx File is for Perfect World: International
That means... it is possible that it does not work with other PW Clients...

*edit (19.09.2012)
RegEx.txt: added StateOffset & ChatBaseAddress
The Cheat Table file (elementclient.ct) is for PWI
09/16/2012 20:40 msxgames#2
Nice to see this. Thanks!
09/17/2012 17:51 boredsauce#3
Looks interesting [Only registered and activated users can see links. Click Here To Register...] though I've never really liked autoit [Only registered and activated users can see links. Click Here To Register...].


ps nice avatar
09/17/2012 19:41 No0oB#4
thx :3 and i dont realy like autoit too ^^
i just use it for most regex and string handling things :D
for everything else i use Delphi ♥ and c++ :)
09/17/2012 21:58 Sᴡoosh#5
Delphi for the win, indeed.

But why use Autoit for regex? Delphi has nice third party classes for regex (TRegExpr) :P

Willkommen zurück alter^^
09/17/2012 22:27 altivex#6
Great ! Will be usefull for srarters , like me )
09/18/2012 11:54 bryan_ae1#7
not work to find offset pw indo update underworld
09/18/2012 12:01 martmor#8
Quote:
Originally Posted by bryan_ae1 View Post
not work to find offset pw indo update underworld
Try the old Offset finder from No0ob. He is still working at PWI maybe at PW Indo too.

[Only registered and activated users can see links. Click Here To Register...]
09/18/2012 13:04 Sᴡoosh#9
Indo Underworld update == PWI 658 update (at least everything besides some small differences in world item struct).

International is winner version anyways, all others would die before PWI does since PWRD is direct decendant of Wanmei :o
09/18/2012 13:19 bryan_ae1#10
[Only registered and activated users can see links. Click Here To Register...]

why target offset look diferent???just 512 i n hec
09/18/2012 13:59 martmor#11
I added to the RegEx.txt file the following lines:

Quote:
CharID Offset: 32C0C38B89(.{8})568BB0
State Offset: 6A0A8986(.{8})
that give additional offsets



Quote:
Originally Posted by bryan_ae1 View Post
[Only registered and activated users can see links. Click Here To Register...]

why target offset look diferent???just 512 i n hec
Target Offset do not work at the old version. All others work. It is written at the messages from the Offset retriever 2.0 topic

Quote:
Originally Posted by Sᴡoosh View Post
Indo Underworld update == PWI 658 update (at least everything besides some small differences in world item struct).
That what Swoosh wrote is trick 17a.

You find some offsets from your version and search on a search engine for the other offsets. ;)
09/18/2012 20:46 bryan_ae1#12
i try with offset finder this :

Quote:
[Only registered and activated users can see links. Click Here To Register...]
all work just target offset wrong..

Quote:
[Only registered and activated users can see links. Click Here To Register...]
@.@ lock target is 0
(sory my english bad) =__=
09/19/2012 04:14 Coinseller#13
nice app, but:

some errors from RegEx.txt in pwi:
Quote:
your BaseAddress is RealBaseAdress:
3BCE7CDC8B0D(.{8})8B51148B72088BCE

you can use this shorter too: A1(.{8})578B482081C1EC
BaseAddress is this:
8B0D(.{8})898D40F1FFFF6A01

Quote:
#Unfreeze Address = BaseAddress+UnfreezeOffset
wont work

base:B4F5FC
freeze:48C
=B4FA88
but unfreeze pwi is: B4FA6C
so Unfreeze Address = BaseAddress+UnfreezeOffset-1c

and here more working regex for chat pwi:
Quote:
ChatBase_Address:
8B0D(.{8})8B4C

LastChat_Address:
8B116A01FF12A1(.{8})
09/19/2012 09:38 No0oB#14
Hey my friend :D everything is right with my offsets for PWI ;D
u know what a pointer is ... so BaseAddress ( my base address is the BASE address and not Base +1C) + UnfreezeOffset (48C) will point to 00B4FA6C ;)
[Only registered and activated users can see links. Click Here To Register...]

RealBaseAdress? what? i didnt know there is something that is more base than the base.... but ok ... i would say the BaseAddress should be the address all pointers start with (00B4EF34+1C+Offset+Offset)? if im wrong slap me with a large trout ot something :D

thx for the new regex i'll put a new regex.txt to the first post

@martmor: my "OwnID Offset" and "CharID Offset" is the same ;3
09/19/2012 13:10 Coinseller#15
Quote:
Originally Posted by No0oB View Post
RealBaseAdress? what? i didnt know there is something that is more base than the base
yes most call it realbase, or from your old source you called it BaseCall_Offset...just remember your coding:
Quote:
from your old source:
".*?(8B0D(.{8})898D40F1FFFF6A01)" & _ ;Base_Address
".*?(A1(.{8})578B482081C1EC)" & _ ;BaseCall_Offset
so this regex are right named:
realbase hex 00B4EF34 (3BCE7CDC8B0D(.{8})8B51148B72088BCE
or same with your old BaseCall_Offset regex
A1(.{8})578B482081C1EC)
base hex B4F5FC (8B0D(.{8})898D40F1FFFF6A01)
unfreeze hex 48C (0F95C084C0[FF88]{2}85(.{8}) )

look in your old source:[Only registered and activated users can see links. Click Here To Register...]
Quote:
".*?(8B0D(.{8})898D40F1FFFF6A01)" & _ ;Base_Address
".*?(A1(.{8})578B482081C1EC)" & _ ;BaseCall_Offset
...
$aUnfreezeOffset = StringRegExp($Data, $UnfreezeOffset, 1)
$aBaseAddress = $info[0][1]
If IsArray($aUnfreezeOffset) Then
$UnfreezeAddress = ("0x" & $aBaseAddress) - 0x1C
$UnfreezeAddress = Hex($UnfreezeAddress + Dec(Reverse($aUnfreezeOffset[1])))
$ArraySize = UBound($info, 1)
ReDim $info[$ArraySize][3]
$info[$ArraySize - 1][0] = "Unfreeze_Address"
$info[$ArraySize - 1][1] = _RemoveZero($UnfreezeAddress)
$info[$ArraySize - 1][2] = Dec($UnfreezeAddress)
EndIf
there you use right regex for Base_Address, right regex for BaseCall_Offset (realbase adress) and calculate it right.

just what i wrote before:
Quote:
BaseAddress(the real one and not your regex for realbase/callbase offset)-1C+UnfreezeOffset=right unfreeze adress

from your old source with right baseadress regex:8B0D(.{8})898D40F1FFFF6A01

result in right calculation:
B4F5FC-1c+48C=B4FA6C right unfreeze adress
or show me with your regex.txt how you calculate this right:
Quote:
original txt:
#Unfreeze Address = BaseAddress+UnfreezeOffset
BaseAddress: 3BCE7CDC8B0D(.{8})8B51148B72088BCE

what result in B4EF34-1c+48C= B4F3A4 wrong offset
you just wrote the wrong regex for baseadress in this app, what you wrote is realbase regex.
need to write like this:
Quote:
Base_Address: 8B0D(.{8})898D40F1FFFF6A01 (right baseadress regex)
Real_Base_Address: 3BCE7CDC8B0D(.{8})8B51148B72088BCE (your wrong called baseadress regex)
then calculate as you descripe and get right result by using base adress:
B4F5Fc-1c+48C=B4FA6C right unfreeze adress

Quote:
Originally Posted by No0oB View Post
if im wrong slap me with a large trout ot something :D
[Only registered and activated users can see links. Click Here To Register...]