Jarvis101 75 Report post Posted November 21, 2013 Many of you, like me, want the bot to be updated right away. The difference between most of you and me however, is that I somewhat understand what is needed to update the bot. My goal : to try and educate the masses of people who don't know what work goes behind each update. What's so complicated about a poe patch, that the bot doesn't work anymore? When a program is compiled (translated from source code to binary instructions (from programming language to .exe)), Every aspect in the program is loaded and stored in various places systematically. Because of this, people can look at a specific spot in the memory (like a bookmark in a book), and figure out what's there and what to do with it. When a patch comes out, the source code is changed. This means that everything isn't sorted and stored the same way, and so when we try and read from our bookmarks, the information there isn't related to the things we're trying to do. In order to fix this, we need to find the new offsets (make new bookmarks), for the data that we want to work with. What does this mean? What exactly do the devs need to do to "make new bookmarks"? Take a look at this picture. It's a screen shot of some random program loaded in some random dissassembly program : I've only outlined some of the aspects, but for a general idea, developers need to sift through and match up thousands of memory addresses and hex data, and verify that the match ups they made are in the right part of the program. This is a tedious task, and it takes a very long time. For me myself and I, if I had to do this I would be bald 5 times over. With me so far? Good, here's where it gets complicated! After hours of countless sifting, and matching, and checking, and re-sifting, and re-matching, and re-checking, then moving to the next memory offset - repeat as many times as you actually look in the memory for something (look for waypoint, look for a piece of the environment (a rock), look for an item that dropped, etc etc etc)... Once you finally have all the new offsets, you need to go back into the program you wrote that reads based off the "book marks" you've made, replace the old "bookmarks" with the new "bookmarks" and hope that you didn't mix anything up. Then you need to run the program a few times, and make sure that everything is working as intended. If it is not, you go right back to step one, and repeat the procedure until you have everything working right. So for those of you that want your update NOW, I suggest you learn how to do this, find the new offsets yourself, and send them to the dev team to help them out. It would go a long way in speeding up the process. Otherwise, please keep the questions to a minimum, because when counting to one thousand, if someone interrupts you, it's easy to lose your place. 1 21 Quote Share this post Link to post Share on other sites
alkpone 1000000 Report post Posted November 21, 2013 Lol nice post, thanks Quote Share this post Link to post Share on other sites
philatio 5 Report post Posted November 21, 2013 Good post! However the bot doesnt read memory for waypoints, just uses fixed mouse coords. Quote Share this post Link to post Share on other sites
Jarvis101 75 Report post Posted November 21, 2013 Good post! However the bot doesnt read memory for waypoints, just uses fixed mouse coords. For navigating the waypoint menu, yes. For finding the waypoint itself, no. Quote Share this post Link to post Share on other sites
philatio 5 Report post Posted November 21, 2013 For navigating the waypoint menu, yes. For finding the waypoint itself, no. Ahh true Quote Share this post Link to post Share on other sites
gloomyr666 0 Report post Posted November 21, 2013 good post but...i want my update now! ;( for what I do not pay money?! Quote Share this post Link to post Share on other sites
Nehez 0 Report post Posted November 21, 2013 +1 Quote Share this post Link to post Share on other sites
kakarottos 0 Report post Posted November 21, 2013 ah... Quote Share this post Link to post Share on other sites
momikemo 0 Report post Posted November 21, 2013 +7000 agree with the comments op added. Quote Share this post Link to post Share on other sites
Aznmaster206 0 Report post Posted November 21, 2013 Out of curiosity, wouldn't it be better to have the offsets stored in a separate txt/ini file. That way, the bot could open the txt/ini file and automatically use the offset text directly within the file. This way, the community could contribute and a "new" bot patch wouldnt be necessary after every minor update. Basically, making it semi-open sourced... Quote Share this post Link to post Share on other sites
Chococo012 0 Report post Posted November 21, 2013 Out of curiosity, wouldn't it be better to have the offsets stored in a separate txt/ini file. That way, the bot could open the txt/ini file and automatically use the offset text directly within the file. This way, the community could contribute and a "new" bot patch wouldnt be necessary after every minor update. Basically, making it semi-open sourced... if this is possible i think is a great idea, so the team can ameliorate the bot without having working on offset Quote Share this post Link to post Share on other sites
Aznmaster206 0 Report post Posted November 21, 2013 if this is possible i think is a great idea, so the team can ameliorate the bot without having working on offset it shouldn't be that difficult.. if its coded in C++, basically include some libs (probably already included), then basically "open" the file. Construct a whileloop that loops through the # of memory tokens. and store each offset in an array. Then softcode the rest of the c++ file to use the array. That way, you basically copy/paste new offsets into this ini/txt file and the bot will "open" a new offset txt file when you change it and auto-update. Quote Share this post Link to post Share on other sites
Jarvis101 75 Report post Posted November 21, 2013 Thing is, when messing with memory you can do a LOT of damage. Not just to the running program, but you could corrupt a data sector in your RAM or your HDD if you don't know what you're doing. It's not like interpreted code, or scripting languages, or high level languages, where there are safeguards that prevent you from typing your way to a new pc... You're dealing with raw buffer data, and if you don't know what you're doing (or someone unwittingly makes a change to the file), then bad things can happen Quote Share this post Link to post Share on other sites
Aznmaster206 0 Report post Posted November 21, 2013 isn't that what memory diagnostic tool is for ;o.. I personally havent written anythign in C++, though i helped robotics team debug stuff and learned some stuff about pointers and memory addressing.. I would think he offsets would be something similar to that. I'm not experienced with offsets/hex value and stuff but from the general idea that the topic is based on... The hex values of the old and new should be similar, if not identical. You could probalby write a simple matching code that: uses the offset/hex pair as key/data whileloop through the whole address to find a matching hex and return the associated offset. move on to next pair of key/data used in the bot assuming that hex value from old and new poe remains identical... Quote Share this post Link to post Share on other sites
Jarvis101 75 Report post Posted November 21, 2013 You're right about pointers and memory addresses, but it's a bit more complicated then searching for an identical hex value... Example : Memory address you're looking for - item mod value. You know the mod value you're looking for is 52. You look for the value 34(52 in hex). 800 addresses return, including the 52 in your currently logged ip, the 52 hp monster on the map, etc etc etc x800. Like I said it takes sifting. Quote Share this post Link to post Share on other sites
arthur.esteves 0 Report post Posted November 21, 2013 I just started botting with exiled in PoE yestarday, and i tell you the few hours i did really paid of. I can wait for the update, no problems. As soon as have a little more experience with this bot I shall become an elite member. I'm already a user of other bot program, but is not as safe as yours. Just want to thank you devs for the great work. Keep it up! Quote Share this post Link to post Share on other sites
Aznmaster206 0 Report post Posted November 22, 2013 (edited) You're right about pointers and memory addresses, but it's a bit more complicated then searching for an identical hex value... Example : Memory address you're looking for - item mod value. You know the mod value you're looking for is 52. You look for the value 34(52 in hex). 800 addresses return, including the 52 in your currently logged ip, the 52 hp monster on the map, etc etc etc x800. Like I said it takes sifting. but say using your example of "52" in hex, hex value has 6 values associated with each pointer, not just a single 1. as i said, you while loop through each key(offsets), but iwthin each key when you're matching the hex values, u forlop i=1:6 such that each of the 6 hex values all match and return the offset value from the new update. If the 6 hex values dont match the old values, then it'll go to the 2nd offset that finds a "52" in the 1st digit, but also continues to check the other 5 values. Edited November 22, 2013 by Aznmaster206 Quote Share this post Link to post Share on other sites
a2329210 4 Report post Posted November 22, 2013 +1 Quote Share this post Link to post Share on other sites
Jarvis101 75 Report post Posted November 22, 2013 Each pointer will point to a certain block in the memory. Each memory block is comprised of 8 bits (8 hex values), and once you've stored the data you need in that block, the remainder values in that block will be 0x00. What you're suggesting would require a search matrix, which would need to analyze multiple memory blocks at once. Still doable, but it's a steep road, and it only gets steeper. Quote Share this post Link to post Share on other sites
UselessTip 3 Report post Posted November 24, 2013 Normaly for the new offsets/adresses I've just written a CE script to update them. But yes doing that but within the same programe you've written is doable but yea I agree "it's a steep road, and it only gets steeper." Quote Share this post Link to post Share on other sites
Merlinside 1 Report post Posted November 29, 2013 I think you're right, its complicated, and hard, that is why we pay for them . If they see, (im sure they), that this process tooks days to make, they should hire more programmer to deliver us the bot faster. I love being in the opposite all the time. Quote Share this post Link to post Share on other sites
Jarvis101 75 Report post Posted November 29, 2013 reverse engineering isn't programing particularily. To call it programming would be to call milk and and eggs the same thing. Sure they both have to do with computers, but reverse engineering has less to do with code, and more to do with computer science, programming theory, reverse engineering theory, etc etc. It's what happens after you get the offsets that is considered programming. Sure programmers area dime a dozen (though good ones are hard to find), but computer science majors, or self taught geniuses that you can trust and have aligned interests are not only hard to find, but are in high demand. Quote Share this post Link to post Share on other sites
Smith7929 0 Report post Posted November 29, 2013 Hey, I just wanted to mention, I've taken a course on assembly language and the stuff to the right of the memory values are not comments. They are the ascii representation of the hex values. For example in the third line in the memory window, the values go "40 40 40 ...." and to the right of that column you can see it it "@@@..." Well, if you look at http://www.asciitable.com/ you can see hex 40 = @ in ascii As for finding the memory addresses again, hopefully the makers of the bot are able to simply find the block of code that points to the new address. The code should always remain static, so you can find it easier than sifting through hexadecimal >.< Quote Share this post Link to post Share on other sites
Jarvis101 75 Report post Posted November 29, 2013 That's true for smaller updates, but larger content updates change the code block size. For example, adding new skill gems would skew the size of the block that contains the items data. As for the dissasembler, I haven't taken any courses on assembly language or anything. I just remember doing a few tuts on basic disassembler usage, and never really played around with it. I suppose when I saw the ascii characters on the right, I assumed that they were comments. Quote Share this post Link to post Share on other sites
RageX 0 Report post Posted December 8, 2013 wonder if a pixelsearch bot would be better in the long run? i mean what we hate of pixelsearch usually it was a autohotkey using mouse and keyboard but current bot does that too. Problem with pixel search users might get different result based on brightness , video card settings and so on. Then again users could create a profile for amd or nvidia cards. Quote Share this post Link to post Share on other sites