[Release] GR Autolooter

06/04/2014 07:08 kellerkind123456#256
Quote:
Originally Posted by Ploxasarus View Post
You can update it yourself if given the effort/time, enough information is given on how.
I´m new using autoit since 3 days and I want update it myself.
I´ve made a running autolooter before last night update.

I´ve used this source:


and changed it with this


Could you give me a helping hand. What must I change?
06/04/2014 14:38 xoraxax#257
this 0x150824F?
06/04/2014 14:49 kellerkind123456#258
Quote:
Originally Posted by xoraxax View Post
this 0x150824F?
I´ve used your func to find the baseadress:
Func _MemoryModuleGetBaseAddress($iPID, $sModule)

and add:
$baseAddr = _MemoryModuleGetBaseAddress($pid,"gw2.exe")
$finaladdr=$baseAddr+0x150824F
$ffa=$baseAddr+0x146FB88

... 2 days ago autoloot was working.
Since yesterday after the last gw2 update it stoped working.
06/04/2014 14:59 xoraxax#259
yes, that is why you have to look for new addresses,,,
06/05/2014 18:24 kellerkind123456#260
Quote:
Originally Posted by xoraxax View Post
yes, that is why you have to look for new addresses,,,
How do I do that? :(
06/05/2014 18:58 CryptoTrader#261
How many people get banned for this?
06/06/2014 00:49 xoraxax#262
Everyone! Be careful.
06/06/2014 15:12 kellerkind123456#263
Quote:
Originally Posted by buFFy! View Post
So, apparently a lot of people are struggling with finding the correct address for autoloot, as it sometimes changes randomly and fucks up the search results.

Thus i'm going to give you guys a little easy-to-do tutorial.
When i first found this address, i was reversing the AsContext.
That means, the address you guys want IS located in the AsContext.

But what is the AsContext and how do i get it?
The AsContext is a class that is used to handle most of the agent selection stuff.

How to always get the AsContext for the latest patch:

-Get OllyDBG
-Attach it to GW2
-Hit the blue E on top of the window and select the GW2.exe module
-Now hit CTRL+A and wait until it has finished (analyzes the module)
-Rightclick into the window and "search for > all referenced text strings"
-Hit CTRL+F (search) and type "AsContext"
-Now, there are many opportunities because it's of course used more than once.
-If you aren't sure, just step (CTRL+L) through the strings until you reach this point:

[Only registered and activated users can see links. Click Here To Register...]

-Mark the exact same line as seen in the screenshot and hit enter
-Should look like this:

[Only registered and activated users can see links. Click Here To Register...]

-Mark the first instruction of the function (push ebp) and hit F2 (sets a breakpoint)
-When ingame, the breakpoint will trigger and show you the current values of the registers

That will look like this:

[Only registered and activated users can see links. Click Here To Register...]

The AsContext is now located in EBX and ECX and EDI, so in this example it would be 017AD738.
Now add 0x6B to that address ([Only registered and activated users can see links. Click Here To Register...]).

Now, this is the address you need for autoloot.
Please keep in mind that this offset may change and you then would have to grab the new one.

Also, please do not send me any private messages about this topic.
Just tried to find the Autoloot Adress as described above:
(open in new window for full size of screenshot)
[Only registered and activated users can see links. Click Here To Register...]

I have created a breakpoint and killed some Pve.
Shortly befor Iget the message "Collect (F)" the breakpoint trigger.

Quote:
- When ingame, the breakpoint will trigger and show you the current values of the registers
- The AsContext is now located in EBX and ECX and EDI, so in this example it would be 017AD738.
Now add 0x6B to that address.
ECX and EDI have the same Adress: 024A388 , EBX is 350C5AE0.
I´ve tried both adresses and add 0x6B in Google to get the lootadress but it didnt work.
What did I do wrong?

Quote:
-Now, there are many opportunities because it's of course used more than once.
I also tried many oportunities, but only one breakpoint trigger right.
Maybe I´m on the wrong one ...
06/06/2014 17:48 buFFy!#264
AsCtx should be in ECX, assuming there was a preceding thiscall. New offset is 0x67.
06/06/2014 19:30 kellerkind123456#265
Quote:
Originally Posted by buFFy! View Post
AsCtx should be in ECX, assuming there was a preceding thiscall. New offset is 0x67.
I´ve tried it the whole day without luck.
Since I am a beginner, I need to clarify some things:

Quote:
-Get OllyDBG
-Attach it to GW2
-Hit the blue E on top of the window and select the GW2.exe module
-Now hit CTRL+A and wait until it has finished (analyzes the module)
-Rightclick into the window and "search for > all referenced text strings"
-Hit CTRL+F (search) and type "AsContext"
-Now, there are many opportunities because it's of course used more than once.
[Only registered and activated users can see links. Click Here To Register...]
There are many opportunities. Do I have to test each one?
Or do I have to look to: "attack target" before and "agent" after the opportunitie?

Quote:
-Mark the first instruction of the function (push ebp) and hit F2 (sets a breakpoint)
[Only registered and activated users can see links. Click Here To Register...]
Is This ok?

Quote:
-When ingame, the breakpoint will trigger and show you the current values of the registers
Do I have to play in game until I have killed a Pve to loot the item with the "f" key and the Breakpoint triggers?
If the breakpoint triggers the autolootadress is in register ECX. This adress I must add with 0x67 to get the final lootadress?

Sorry for the noob questions ...
06/06/2014 21:14 buFFy!#266
Quote:
Originally Posted by kellerkind123456 View Post
Sorry for the noob questions ...
Just do the following..

Code:
byte sigAsContext[] = { 0xFF, 0x50, 0x1C, 0x85, 0xC0, 0x74, 0x1B };
Hit CTRL+B in olly, tick the 'scan whole block' checkbox and enter these bytes, hit enter.
The resulting address - 4 points to the current AsContext. Add 0x67 to that.
06/06/2014 23:57 xoraxax#267
This is what Buffy said:

$finaladdr=_memoryread(_memoryscan($open,"FF 50 1C 85 C0 74 1B")-4,$open,"dword")+0x67

Thank you, very usefull.
06/07/2014 15:40 kellerkind123456#268
Quote:
Originally Posted by xoraxax View Post
This is what Buffy said:
$finaladdr=_memoryread(_memoryscan($open,"FF 50 1C 85 C0 74 1B")-4,$open,"dword")+0x67
So I only have to adapt this to your last working autoloter version?

Quote:
Originally Posted by xoraxax View Post

this stuff works for me now (assemble it with my last program)
... and change:
Code:
$finaladdr=$baseAddr+0x150824F
to
Code:
$finaladdr=_memoryread(_memoryscan($open,"FF 50 1C 85 C0 74 1B")-4,$open,"dword")+0x67
So"$baseAddr" is no longer needed to find the autolooter address?

I don´t understand this line in your code:
Code:
$ffa=$baseAddr+0x146FB88
What's this? Do I have to adapt this address too?

..btw, I've tried it, but it did not work.
06/07/2014 16:05 buFFy!#269
Quote:
Originally Posted by kellerkind123456 View Post
..btw, I've tried it, but it did not work.
Because you did it wrong. Atleast try to do something on your own.
A working solution is posted, its your job to undertand it
06/07/2014 18:47 xoraxax#270
$ffa is 1 when chat is active and 0 when it is not. It is not necessary to check this flag (not sure where is that flag located and don't have time to look for it). So read the text and try to understand what is going on. Pretty simple.
Almost everything happens here:

Code:
If $enabled Then ;we can disable looter
		$r=WinActive("[CLASS:ArenaNet_Dx_Window_Class]") ;if our window is not active there is no need to press loot key
		If $r Then ;else there is
			$r = _memoryread($finaladdr, $open) ;we read flag here
			If $r = 64 Then ;if there is a loot
				$r = _memoryread($ffa, $open) ;we check if chat is active or not
				If $r = 0 Then ;if not active we can loot
					Send($k)
					Sleep(50)
				EndIf
			EndIf
		EndIf
	EndIf
So basically all you need to find is

Code:
$finaladdr=_memoryread(_memoryscan($open,"FF 50 1C 85 C0 74 1B")-4,$open,"dword")+0x67