Page 1 of 1

Lua mono - get field addr

Posted: Wed May 20, 2020 10:45 pm
by miraikolus
I've tried now for some time, but just can't it running (prob s.t simple but ... I don't get it yet).

Curr. experimenting with mono features, and I do want to get the build vers (also read a structure for dropdown but let's keep it simple for now., might be same problem)

What I did manage so far (also trying other things but on that topic):

[SPOILER="lua code"]


local namespace='WolfFramework'

local class='GameManager'

local method='Update'

local fver='BUILD_VERSION'


local dom=mono_enumDomains()

local ass=mono_enumAssemblies()

local cId = mono_findClass(namespace, class)

local cName = mono_class_getName(cId)

local cStatic = mono_class_getStaticFieldAddress(dom[1], cId)

local ftbl = mono_class_enumFields(cId)

local ftblver, ftblstr = {},{}

local mId = mono_findMethod(namespace,class,method)

local mcId = mono_method_getClass(mId)

local pcId = mono_class_getParent(mcId)

local pcIdname= mono_class_getName(pcId)

for i=1,#ftbl do

if ftbl[i].name == fver then ftblver = ftbl[i] end

if ftbl[i].name == fstr then ftblstr = ftbl[i] end

if next(ftblver)~=nil and next(ftblstr)~=nil then

print("found both")




local addr = getAddress('WolfFramework:GameManager:Update')

print("class ",cId, string.format("%.8x",cId))

print("classname ",cName)

print("static ",cStatic, string.format("%.8x",cStatic))

print("fields ",#ftbl,ftbl[1].name,ftbl[#ftbl].name)

print("method ",mId,string.format("%.8x",mId))

print("method-cl ",mcId, string.format("%.8x",mcId))

print("parent ",pcId, string.format("%.8x",pcId),pcIdname)

print("addr ",addr, string.format("%.8x",addr))

local test = readPointer(ftblver.field)

print("test ",test, string.format("%.8x",test))

return ftblver,ftblstr




[CODE=ruby]found both

class 3027348515648 2c0dc086b40

classname GameManager

static 3027188070240 2c0d2783760


method 3027350643184 2c0dc28e1f0

method-cl 3027348515648 2c0dc086b40

parent 3027288188728 2c0d86fe738 MonoBehaviour

addr 3027638222848 2c0ed4d0000

test 3027350668768 2c0dc2945e0




flags = 32854

field = 3027347685512

isStatic = true

isConst = true

monotype = 8

parent = 3027348515648

typename = System.Int32

offset = 0

type = 3027350668768





flags = 32854

field = 3027347685608

isStatic = true

isConst = true

monotype = 14

parent = 3027348515648

typename = System.String

offset = 0

type = 3027350668816




[SPOILER="Notes"]Since it does not show offsets, I don't believe f.e. [URL='']this does help[/URL], does it? OR




... and way more (just last results)

idk, is there something I can read in on mono features that is ... not extensive like 100+ documentation (esp. since engl. is not my native language)

Or is there some table I have not found yet but can take a look at doing ~ the same?

dnSpy does show

[CODE=csharp]// WolfFramework.GameManager

// Token: 0x04002B7C RID: 11132

public const int BUILD_VERSION = 114;[/CODE]