Jump to content

Memory reads and 3.2 (not beta)


Recommended Posts

Hi,

I wanted to write in reference to this thread, but it's closed : http://www.autoitscript.com/forum/index.ph...1&hl=Diablo

So, I've downloaded and installed the 3.2 version of AutoIt, and, although I get no errors using the code for the _Memory UDF's, none of the Diablo II examples seem to work correctly. That is, when I run the Name script, it displays nothing. When I run the Strength script, it displays 0, Edit: when I run the MaxHealth script, it pegs my CPU at 100% and never seems to finish :P

I realize the documentation for the _Memory UDF's says it won't work without the Beta version of AutoIt. Will there be support for the 3.2 version of AutoIt, since this is the "stable" version of the Beta?

Thanks in advance!

Edit:

Also, the following doesn't appear to work either - it only returns 0 no matter what values I put in...

http://www.autoitscript.com/forum/index.ph...f=9&t=27111

Could it be that...

  • it is broken in AutoIt 3.2?
  • it only works with d2loader?
  • it doesn't work under Windows XP
Edited by Fuhrmanator
Link to comment
Share on other sites

When you are asking for support even for a topic that is currently in the Scripts and Scraps section you need to post the actual support topic in the support forum, and include a link like you did above.

I read part of the thread, and towards the end it said some of his stuff wasnt working.

Another thing. Search for _Mem() UDF's with w0uter as the screen name as in his first post he told that he got most of the functionality from him.

@Moderator

Please move this to the support forum.

JS

AutoIt Links

File-String Hash Plugin Updated! 04-02-2008 Plugins have been discontinued. I just found out.

ComputerGetInfo UDF's Updated! 11-23-2006

External Links

Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)

Link to comment
Share on other sites

When you are asking for support even for a topic that is currently in the Scripts and Scraps section you need to post the actual support topic in the support forum, and include a link like you did above.

My bad. Thanks for being polite about it.

I read part of the thread, and towards the end it said some of his stuff wasnt working.

Yeah, I tried reading that whole thread, but the signal to noise ratio drops terribly at some point. :P

Another thing. Search for _Mem() UDF's with w0uter as the screen name as in his first post he told that he got most of the functionality from him.

Thanks - I'll check it out.
Link to comment
Share on other sites

Could it be that...

  • it is broken in AutoIt 3.2?
  • it only works with d2loader?
  • it doesn't work under Windows XP
And the answer is...

b. it only works with d2loader...

:P The reason appears to be SeDebugPrivilege (d2loader doesn't require it to read memory, but vanilla Diablo II does).

I was able to make some progress to get around this problem, and I am able to read a character's name without using d2loader, via a .dll posted here: http://www.autoitscript.com/forum/index.ph...ost&p=94875

This .dll sets the SeDebugPrivilege for reading/writing.

I'd like to know if it's possible to do this without having to use a .dll? I searched for seDebugPrivilege on this forum and didn't find much at all about how to set it... only some ppl asking if it's needed...

Link to comment
Share on other sites

Glad you got it sorted out.

Thanks.

Here is a .zip file that is a simple proof of concept: ExamplesSeDebugPrivilege.zip

It's a modification to two of Nomad's original files to include the SetPrivilege() call before attempting to read Diablo II memory (needed without d2loader).

I put SetPrivilege() (the one posted here by Larry) in the Memory.au3 (now called NomadMemory.au3) and I modified one example (Strength.au3) to use the call.

This example works without d2loader.

So, I'd suspect that an error should be returned somewhere along the line when attempting to read memory without the privilege to do so. Here's where I think the problem lies:

DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')

Nomad checks for an error after this call, but none is generated if SeDebug privileges are not in place. The values returned are simply zero.

Does anyone venture to guess where the fault for the hidden error lies? In fact, this is the reason I (we) lost so much time with this thing.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...