Why am I doing plug-ins?

Source: Internet
Author: User
I only have two days, one day for listening to Xu Wei, and one day for doing something else.
I didn't go to outing this year, and I rarely gave myself a holiday. By the end of the year, I had a lot left. In the past two days, I plan to write some technical articles for myself. When I get up, I turn on my computer and play some music. It's Xu Wei's "every moment is brand new", and it's just an addiction, I 've listened to "Elsewhere", "that year", and the 05-year Beijing concert for a whole day. Xu Wei's music is tuned to every song, but it has a kind of strength that can make people addicted to it, and then can't do anything. I got up and learned it today. Xu Wei still wants to listen to it. In order not to be addicted to it, I found another song for listening, which I like very much. It is very decadent, suicide is painless.
When I was playing Diablo II crazy, I was busy getting my degree in Beijing alone. I planned to leave Beijing after graduation and leave this city where I have stayed for 8 years. By accident, I stayed for another half year. In addition to working overtime, I only had time-walking and reverse engineering for maphack. I have played a lot of games since I started to play arcade games in elementary school, and I have never imagined that I would do Plug-ins on my own one day. Diablo is a game that I like very much. Since the first generation, Diablo, hellfire, Diablo II, and Diablo II (the king of destruction) have all played, however, closed server was a very late issue, and it was later in 09. Dark players who have experienced the 09 era know that maphack was a standard configuration and used by almost everyone. Many private servers even use it as the only plug-in that can be used. I naturally also use it. From the first simple use, I learned to change the configuration file myself, and then I began to read some source code.
After the much-anticipated 1.10 patch release, I waited for the new maphack to come out like many players. Since previously, the mouse pad of maphack (mousepad) launched the corresponding maphack version (maphack 1.10 s) immediately after patch 5.1 beta 2 was released ), everyone thinks that the official version of maphack 1.10 will soon be used. Unexpectedly, I waited for a week without any changes. At this time, someone (jhj) made a simple version of maphack that can only open a map. After another week, I still had no movements. I was a little impatient. On the way to work one day, I thought about this and suddenly got an idea and wanted to do it myself. I naturally don't want to make a simple version. Someone has already done it, and it's boring. The mouse pad has published the source code (maphack 4.6) of an earlier version of maphack. However, compared with the latest version, the workload for implementing new functions is quite large, I just want to make a temporary version. If you want to think about it, it is relatively simple to find a version that can be used for 1.10 On the latest maphack program. There are several questions to be clear about. One major difficulty is that the data structure may change. For example, in the small and medium scenarios of 1.10, the data table is shown as follows: struct drlglevel {
Drlgmisc * pdrlgmisc; // + 00
DWORD nlevelno; // + 04
DWORD _ 1 [3];
D2seed seed; // + 14
DWORD _ 2 [5];
Drlgroom2 * proom2first; // + 30
DWORD _ 3 [126];
Drlglevel * plevelnext; // + 22C
};

In 1.11, it becomes like this: struct drlglevel {// sizeof (drlglevel) = 0x230
DWORD _ 1 [5];
DWORD nlevelno; // + 14
DWORD _ 1A [120];
D2seed seed; // + 1f8
DWORD _ 2 [1];
Drlgroom2 * proom2first; // + 204
Drlgmisc * pdrlgmisc; // + 208
DWORD _ 3 [8];
Drlglevel * plevelnext; // + 22C
};

As you can see, the data is still the data, but the relative position has changed. In the case of maphack source code, this is a simple problem, as long as you re-define the drlglevel structure in the header file and then compile it. The problem is that I have no source code and can only modify it in the existing maphack program. If one of the internal game data structures used by maphack is changed, the idea is doomed. However, after thinking about it, I think this will not be a problem, because the latest maphack is for 1.10 beta 2, and beta 2 is the last beta version before the official version is released, in general, the main task of software development in the beta stage is to change bugs. The program framework and the main data structure should not be changed. The final beta version changes will be smaller. Another problem is, of course, the corresponding addresses of all patch points and referenced internal functions in maphack in 1.10 must be found. There are more than 100 of these addresses, and the number of them seems quite scary, but there is no technical problem. A favorable condition is that by studying the source code of maphack 4.6 and the disassembly of the maphack 5.1s program, I know that the positions of these patch points and the referenced internal function addresses in the memory are continuous, this greatly facilitates Binary-Level Correction. After some analysis, I think it is feasible to modify the latest program. Facts have proved that my idea is correct, except that the data structure that won't lead to program crash has changed, there is basically no problem. It took about a week to find more than 100 addresses and make the first version. Some tests and bugs were made to stabilize the system.
At the beginning, my idea was very simple. I just wanted to give everyone something available before the real maphack was released. I also think of it as a toy. By the way, I don't want to get any reward, so I just put it on the BBS (Zixia) of my private server. However, once something arrives on the internet, it will not be controlled by you, so someone will soon put it on the public network, and soon it will be discovered by foreigners, and it will go to foreign websites. Foreigners are very enthusiastic about building a technical support website for it. As soon as foreigners know it, the original author will inevitably know that it finally caused an uproar on the maphack support forum. Many fans of mousepad say this is ripoff, Trojan, and I didn't give credit to the mouse pad. I am also very dissatisfied with the mouse pad. The main reason is that the mouse pad has been changed by me and cannot be regarded as his work (he should not be responsible for any problem). I should change the name, at least this statement displayed during maphack loading should be modified: <maphack>: mousepad's Diablo II maphack v1.10 (v5.1s) installed.

However, there was another reason why the mouse pad was not satisfied: he had already upgraded the new version, but he was planning to sell maphack for a long time. At that time, he was busy with anti-piracy. I have been stuck in the middle of the road, just to block the wealth of others! As a matter of fact, I still have a lot of respect for the mouse pad myself. This old man made a lot of original contributions on D2 hacking. He did not have the ability to reverse engineering, but the C program was also very exquisite, it is definitely a world-class hacker. If I knew that he was going to sell money, I wouldn't have made such a thing.
I have also considered the name issue before release. First of all, because I respect the mouse pad, I plan to give credit to him from the very beginning, or I will change the name long ago. In addition, my job is to modify the memory address (although there are many), and most of the code is still his. Of course I don't think this is my software. Finally, I just wanted to make a temporary alternative, and I didn't think much about it. So it doesn't matter what the name is. However, it seems that it is appropriate to change the sentence as follows: <maphack>: mousepad's Diablo II maphack v1.10 (v5.1s) sting edited version installed.

In any case, the result is that I am overwhelmed. The most unpleasant thing is that those fans ripoff all day and make me angry. Didn't you say I was ripoff? I want to deserve this title, I have to give it a real ripoff. I want to reverse the whole maphack 5.1s program and decompile it into C. On this basis, I will add some features to create a software competing with maphack.
It is crazy to completely disassemble a program into C. It is difficult to do so in general. I have never done it before. Don't talk about it. I never even thought about it. However, if the fire is too big, it is still necessary to do things rationally. It is not feasible. If you can do it, you have to analyze it carefully. In reverse engineering, I think the most important thing is that the overall situation must be better. That is to say, if you have an idea about whether it is feasible or not, you must be able to grasp it technically and think clearly in advance. Because the reverse engineering process is a program, the assembly code is usually millions of orders of magnitude, just like a needle in a haystack. If there is nothing to think about first, it is easy for a hacker to get in and get nothing, the attack is huge. It is easier to design a program. To implement an idea, you can Google others' practices. You have a lot of basic libraries to use, and your technical skills are weak, the code written is ugly, less efficient, and cannot be done.
On this issue, I think I have two favorable conditions. First, the source code of maphack 4.6 is available. Although the latest version adds many functions, the basic framework remains unchanged. Another advantage is that the mouse pad is a good C language expert, and the code is very refined. It does not have any nonsense. It is good for performance, but it is a disadvantage from the perspective of reverse engineering. Finally, it took me two weeks to decompile it and issue four more beta version bugs.
This is the origin of d2hackmap. The reason why I named it hackmap mainly involves several layers. First, the name is very similar to that of maphack. You can see what it is. In fact, not only the name, but also the functions are fully compatible with the original program. This is my major design goal. Anyone who has used maphack knows that its configuration file is very complicated. If I have another set, there will certainly be a lot of technical support problems, will make me exhausted. Maphack is already familiar to users. Many online forums are discussing its usage, compatibility with maphack can undoubtedly minimize the workload of my technical support (even though I still receive a large number of emails ). The second layer indicates hackmap = hack maphack. That is to say, hackmap is obtained by maphack. The third layer refers to spoof a mouse pad and deliberately uses him to open the mouse.
When I was playing D2, I was still playing in the 09 period. Although I was playing in the 1.10 period, I had very little experience, and I basically didn't play in the 1.11 period. I didn't plan to make a hackmap of 1.11, because at that time I knew that warden was hard to deal with, and it was difficult for others to use it, in the beginning, we only made a relatively secure version that can only be used to open maps. It didn't take much effort. Later, I saw that many people had a strong desire to have a full-featured version, and I made another one. It was just a matter of physical labor. However, I did not calculate the full-featured version of anti-warden from the very beginning. The maphack software is too tightly coupled with the game itself and requires a great deal of work to hide myself, even if it is made, it is also done in white (in addition to earning some experience ). I think warden will win in the end because maphack (note that I am only talking about maphack plug-ins) cannot deal with Warden's data integrity check. What are the most basic functions of maphack? Open a map! If you open all the scene maps within five seconds after entering the game, you will not be cheated. In addition, if you go directly to a game destination every time you enter the game, there will be no detours at all (D2 scene maps are random). What can be done besides cheating. If warden detects the data, it will surely die. Of course, warden has not evolved into this step so far.
Finally, I would like to say that the plug-ins are divided into good faith and malicious. Maphack is a kind of goodwill, and its goal is to help players better carry out the game. It even has some anti-malicious external function. For example, if some malicious plug-ins use bugs in the game program to cause other players to lose the line, maphack can avoid this situation, which is equivalent to changing the bug for the game. Players who use d2loader know that there is a bug when d2loader passes the game, which may cause the game to exit. hackmap changes the bug. Also, one of the hard work I 've done for hackmap so far is to support Chinese chat (not my first ). Players of D2 know that the D2 game itself does not support Chinese Input. Chinese characters entered in the game are garbled and only pinyin or English is required for communication. Hackmap added support for Chinese Input in versions 1.15 and 1.16, but I have always felt unsatisfied and failed to solve all the problems. The main reason is that D2 uses three character sets: ANSI/MBCS, Unicode and UTF-8: typically ANSI/MBCS, and multi-language-related parts use Unicode, through the network transmission and converted to UTF-8, such as chat information (the general situation is like this, the specific note is not accurate ). These character sets are mutually converted. D2 also has simplified Chinese and Traditional Chinese versions, which are complex and difficult to take care of all the situations without source code, so after hackmap 2.0, I simply canceled this function again. To completely solve this problem, you can only redesign the game code.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.