Page 1 of 4
Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Wed Jul 15, 2020 6:21 pm
by SvT
7/15/2020 - First version
7/17/2020 - Fixed crashing. Thanks cfemen!
9/23/2020 - Completely rewritten. Should be more reliable now
Very simple table. This allows you to unlock ANY achievement in the game.
USAGE:
1. Target process: NeonAbyss.exe
2. Activate "Achievement Unlocker" script
3. When the red instanceAddr populates with an address, you are ready to unlock achievements
4. Check the box for the achievement you want and it will unlock.
*
* If you're having issues, try starting a new save.

Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Wed Jul 15, 2020 6:51 pm
by cfemen
Hey, i dont have the windows store version with the GDKAchievementManager class, but your problem is here:
local address = 0x1
you need a valid address for the call.
does GDKAchievementManager has a Update method?
fetch the address from there, or look what else is calling the GDKAchievementManager to trace the origin and then read the address.
or you can use
[Link] (you may have to iterate through all classes before it returns a correct instance array) just make sure that the cachedPtr is > 0 and that it contains some valid values.
Edit :
viewtopic.php?p=142141#p142141 here a example the
Call addMoneyToPlayer Script [with money amount parameter] is what you should look at.

Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Wed Jul 15, 2020 7:31 pm
by SvT
cfemen wrote: ↑Wed Jul 15, 2020 6:51 pm
Hey, i dont have the windows store version with the GDKAchievementManager class, but your problem is here:
local address = 0x1
you need a valid address for the call.
does GDKAchievementManager has a Update method?
fetch the address from there, or look what else is calling the GDKAchievementManager to trace the origin and then read the address.
or you can use
[Link] (you may have to iterate through all classes before it returns a correct instance array) just make sure that the cachedPtr is > 0 and that it contains some valid values.
Edit :
viewtopic.php?p=142141#p142141 here a example the
Call addMoneyToPlayer Script [with money amount parameter] is what you should look at.
Thanks for the reply. I was aware that I need to find a valid address (it just happens to work if I input 0x1, but with crashing).
My trouble is writing a script that automatically finds a valid address...no issues finding it manually but obviously it changes after time the game is re-opened.
I will look at the links you posted a little later when I have time

Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Thu Jul 16, 2020 5:20 pm
by SvT
Very slight modification of your code:
Code: Select all
[ENABLE]
{$lua}
if syntaxcheck then return end
local monoAddress ="GDKAchievementManager:UnlockAchievement"
local pPlayerPrefsSetInt = ""
local GDKManager
local klasses = {}
local Instance
local Address=0
local asslist = mono_enumAssemblies()
local i=0x00
while(i<0x30) do
local ext, opc, byt, add=splitDisassembledString(disassemble(getAddressSafe(monoAddress)+i))
if string.find(byt,"BA") then Address=getAddress(add) Address=Address+1 break end
if(ext~="")then pPlayerPrefsSetInt=opc:sub(opc:find("0"),opc:len()) end
i=i+getInstructionSize(getAddressSafe(monoAddress)+i)
end
writeInteger(Address,20) --achievementID '20' (hard code 20, replacing your dNewMoney var)
for i, addr in ipairs(asslist) do
local img = mono_getImageFromAssembly(addr)
local img_name = mono_image_get_name(img)
if (img_name == "Assembly-CSharp") then
local classes = mono_image_enumClasses(img)
for i, cls_addr in ipairs(classes) do
if classes[i].classname == "GDKAchievementManager" then
GDKManager = classes[i].class
end
end
end
end
klasses = mono_class_findInstancesOfClassListOnly(nil, GDKManager)
for n, klass in ipairs(klasses) do
if(readInteger(klass+16)>0) then
Instance = klass
end
end
local method = mono_findMethod('Assembly-CSharp','GDKAchievementManager', 'UnlockAchievement')
local domain = mono_enumDomains()[1]
local args={}
mono_invoke_method(nil, method, Instance, args)
--return "assert(true)"
{$asm}
[DISABLE]
Seems to be the important part of the script but I don't quite understand what the section is doing and how I can modify it.
Code: Select all
local i=0x00
while(i<0x30) do
local ext, opc, byt, add=splitDisassembledString(disassemble(getAddressSafe(monoAddress)+i))
if string.find(byt,"BA") then Address=getAddress(add) Address=Address+1 break end
if(ext~="")then pPlayerPrefsSetInt=opc:sub(opc:find("0"),opc:len()) end
i=i+getInstructionSize(getAddressSafe(monoAddress)+i)
end
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Thu Jul 16, 2020 6:11 pm
by cfemen
SovietWristwatch.jpg wrote: ↑Thu Jul 16, 2020 5:20 pm
Seems to be the important part of the script but I don't quite understand what the section is doing and how I can modify it
nope, thats only to override a hard coded value and to get a address to a string.
DevOptionsManager:addMoneyToPlayer does not have a *dNewMoney* parameter, and this code does add a parameter.
you can ignore/remove that.
//
GDKAchievementManager:UnlockAchievement has a Integer parameter? so you did it correctly in your table -> {{type = vtDword, value = *ID*}})
//
the most important part is here:
Code: Select all
for n, klass in ipairs(klasses) do
if(readInteger(klass+16)>0) then
Instance = klass
end
end
thats to filter the instances, you need to adjust that.
can't help you with the filter coz it always depends on the vars in the class.
+16(decimal) is always the cachedPtr(on x64) and it needs to be valid.
compare the valid instance with invalid ones and add the vars to the filter, then call the method with the integer ID parameter, like this:
mono_invoke_method(domain, method, Instance, {{type = vtDword, value = *ID*}})
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 5:13 pm
by SvT
Correct - it's just an integer for achievementID:
Made some modifications to the script and it's working now! By chance, the code that filters the instances works without any changes though I wish I understood it more.
Code: Select all
[ENABLE]
{$lua}
if syntaxcheck then return end
local monoAddress = "GDKAchievementManager:UnlockAchievement"
local pPlayerPrefsSetInt = ""
local GDKManager
local klasses = {}
local Instance
local Address = 0
local asslist = mono_enumAssemblies()
for i, addr in ipairs(asslist) do
local img = mono_getImageFromAssembly(addr)
local img_name = mono_image_get_name(img)
if (img_name == "Assembly-CSharp") then
local classes = mono_image_enumClasses(img)
for i, cls_addr in ipairs(classes) do
if classes[i].classname == "GDKAchievementManager" then
GDKManager = classes[i].class
end
end
end
end
klasses = mono_class_findInstancesOfClassListOnly(nil, GDKManager)
for n, klass in ipairs(klasses) do
if (readInteger(klass + 16) > 0) then
Instance = klass
end
end
local method = mono_findMethod("Assembly-CSharp", "GDKAchievementManager", "UnlockAchievement")
local domain = mono_enumDomains()[1]
local args = {}
mono_invoke_method(domain, method, Instance, {{type = vtDword, value = 19}}) --achievementID
{$asm}
[DISABLE]
I might be totally off, but is the integer you're checking at +16 found from dissecting the structure of an address you found that works to invoke?
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 6:54 pm
by GipsyDanger
is it possible to make this table, for other gamepass games?
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 6:57 pm
by Rhark
GipsyDanger wrote: ↑Fri Jul 17, 2020 6:54 pm
is it possible to make this table, for other gamepass games?
It's possible to make similar tables, but something like this requires the game to use Mono (which not a lot of Game Pass games use) and also have some sort of mono symbol to unlock achievements.
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 7:01 pm
by GipsyDanger
got it!
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 8:20 pm
by Lord Blade
I still use Steam Achievement Manager. :p
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 8:58 pm
by SvT
Lord Blade wrote: ↑Fri Jul 17, 2020 8:20 pm
I still use Steam Achievement Manager. :p
For Windows Store games?

Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Fri Jul 17, 2020 9:51 pm
by Lord Blade
No no. I just mean I use it for Steam games for easy unlocks, and it just seems odd that nobody's got the same done for the Windows Store.
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Thu Aug 13, 2020 8:17 pm
by BOOMHeadshot
Thanks for the hard work! Love using your Achievement unlockers and helpers!
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Sat Aug 22, 2020 11:09 pm
by trakinas
Thanks for this, but not work for me. When I activate any code, the game freeze and close
Re: Neon Abyss Achievement Unlocker - Windows Store Version
Posted: Sun Aug 23, 2020 7:18 pm
by Gencrocks
when you say Windows Store ver. does it include Gamepass ver.?