Modification of the font size of the VB Program (unit)

Source: Internet
Author: User
Modification of the font size of the VB Program (unit)
Dianjing studio-liang lifeng

Statement

Individuals can freely repost this article, but they should maintain the integrity of the original article and notify me. For commercial reprinting, please contact me first.

This article does not explicitly or explicitly indicate that this article is completely correct. You may choose to read and use the content of this article, and you shall not be liable for it.

If you find any mistakes in this article, please point out to me; if you do not understand anything, please give it to me.

Comments, suggestions and questions are best written on the message board of my home http://llf.126.com.

(A Tao Press: This article is composed of four VB articles by Liang lifeng, and is appended with the excerpt from other related articles by Liang lifeng. This article retains all the content and narrative order of the original article)

Article 1: modifying the font size of the VB Program (200000005.15)

Font Size

In the past, "Wei Qian" asked why an error occurred during the startup of the program after modifying the font of the VB executable file. I also tested and modified the font of an executable file, I also ran with hope and made a mistake. I don't know why, so I put it down.

However, I have been wondering that the error prompt is strange. It is "invalid file format". I have been thinking about it for a moment, the so-called "invalid file format" must be because VB transfers the data of the entire form to the VB Runtime Library "msvbvm50.dll" (or msvbvm60.dll) as a file ), generally, when we modify a Chinese file, the font name is always shorter than the original name. For example, the commonly used "Ms sans serif" in American programs occupies 13 bytes, chinese software often uses "" and occupies four bytes. In this aspect, there should be no problem, but the problem eventually occurs, unless the font is also processed as a whole, of course, the font is indeed a whole:


Beginproperty font name = "" size = 9 charset = 134 Weight = 400 underline = 0 'false italic = 0' false strikethrough = 0' false endproperty


Okay, first of all, we should know that size = 9 does not necessarily indicate that the executable file is "09". If you use win32pad, there will be a win32pad in the Windows directory. INI, you can know that when we select ", 9", the size is actually 180, but does VB use 180? Not necessarily, but we should first convert the above numbers to hexadecimal: the font size 9 may be "09" or "B4"; charset is a language family, A general font has only one language family. For example, the "" language family is "gb_2312", that is, 134. The hexadecimal number is "86". weight should be the word width, it is not clear, but it is also converted. 400 is "90 01". Then we can search and edit executable files.

Because it is a whole, other information may be in front of the body name, or behind the body name. In the example file, the same file has two font blocks, one of which is a form, one is a label, so you can compare it. The details are boring. If you are interested, you can do it on your own. Here I just want to explain it briefly, at first, I thought the data should be behind the font name. I was wrong. Later I thought the data was only before the word name. Then I went wrong again. The final conclusion was: 10 bytes before the font name (or 11 bytes, because the first 11th bytes are the same, but it is useless) the font block consists of one byte and the font name after the font name.

To change the font size to "9 9, 9", copy the font blocks in the ready-made "9, 9" files to the files to be modified. In the example file, the hexadecimal format of the English font block is as follows: "00 00 00 90 01 44 42 01 00 0d ...... FF ", where"..." Indicates the font name. From here we see "90 01" (weight). I don't know what it means; the hexadecimal format of the Chinese font block is as follows: "86 00 00 00 90 01 90 5f 01 00 04 ...... FF ", from here, we not only saw" 90 01 ", but also saw" 86 "(charset), which is also an important basis for me to determine the font block size. The last thing to do is to replace it. This step is relatively simple, but it should be noted that the final character is not necessarily "FF ", in my example file, there are also "46", and other programs should also be these two types, but it is not surprising if not, you only need to copy one byte after the original font name to the modified font name. I don't know which byte in the font block is the font size, but as long as all the data is copied, it shows "9, 9. Of course, if you want to show the same bold, italic, and underline as the original font, You need to compare and judge the bytes. It should not be too difficult. You can try it yourself. (I guess "FF" may be the end sign of the entire form, but there is no evidence)

I will not give the specific legend. You can refer to and compare the example file, and it should have a better effect.


Article 2: modifying the font size of the VB Program (200020.5.19)

Continued war

In the past two days, I have studied the structure of the font block in the VB executable file. Now we can basically make sure that the font block is composed of the font name and the twelve bytes above it, this article mainly introduces the results. The specific process is skipped. If you are interested in the process, contact me.

In this example, all non-ActiveX controls with the "font" attribute are included. At the same time, this example program uses all my English fonts. After reading this article, you should take a look at this example and try it by yourself.

Research on font Blocks

The first byte indicates the control type to which the font block belongs. The known control types are as follows (the numbers are in hexadecimal format ):


Frame   = 1BOption  = 1DCommand = 1DDrive   = 1EDir     = 1FCheck   = 20Data    = 21Label   = 25Combo   = 26List    = 27File    = 29Text    = 2EPicture = 39Form    = 40


The meaning of the second byte is unknown. In the font block that can be found now, its value is "01", or it may constitute a double byte integer together with the first byte.

The third byte represents the "language family", that is, "charset". The English value is "00" and the simplified Chinese value is "86 ".

The meaning of the fourth byte is unknown. In the font block that can be found now, its value is "00", but it should have nothing to do with the previous byte, which may be a reserved area.

The fifth byte indicates the font style, which is "italic", "underline", and "strikethrough", where "italic = 02", "underline = 04 ", "strikethrough = 08" can be checked. For example, if you want to have both "strikethrough" and "underline", this byte is "08 + 04 = 0C ".

The sixth and seventh bytes form a two-byte integer, indicating the font's "bold factor" (weight). The general values are 400 or 700, indicating normal and bold, respectively, but the font "Bookman Old Style" may also be 300, so the values of these two bytes are "90 01" (400), "BC 02" (700) or "2C 01" (300 ). With regard to the "bold factor", the help of VB says this:


Returns or sets the character weight of the font object. Weight refers to the character width or "bold factor ". The larger the value, the thicker the character.

Font objects cannot be used directly during design. In the Properties window, select the font attribute of the control and click Properties to set the weight attribute. You can implicitly set the weight attribute by selecting an item in the font box. The Weight Value of the normal and italic values is 400 (default), while the weight value of the bold and oblique Bold values is 700. However, when running, you can directly set weight by specifying the weight attribute value for the font object.

If you set weight of the font object to a value different from 400 or 700 at runtime, Visual Basic converts this value to 400 or 700, this depends on which value is closer to the set value. The exact range is: weight> 400 and <551 is converted to 400; weight> 550 is converted to 700.


The eighth, ninth, tenth, and eleventh bytes constitute a four-byte integer, indicating the font size. Its value is 10000 times the specific setting. For example, 9 is 90000 here, the corresponding four bytes are "90 5f 01 00 ".

12th bytes indicates the length of the font name. For example, if the font name is "Courier New", this byte is "0b ". You can also know that the font name cannot exceed 255 bytes.

All the following bytes are the font names.

Font block Modification

Through the above introduction, we should have a general understanding of the font block modification. Let me talk about the specific problem.

In Chinese, the third byte needs to be modified. Change the original "00" to "86". In addition, the font size needs to be modified, generally, you can change "80 38 01 00" (8) to "90 5f 01 00" (9) without modifying the font name, however, for "fixedsys", "system", or Chinese fonts, if you want to display them as "", you need to change the font name, however, because the font block and other parts constitute the structure of the form, it is not suitable for modifying the length of the font name. You can change the original font name to a non-existent font name, the system automatically uses "" for display (in fact, the default font is used for display). You can change all the bytes of the font name to spaces, so that the names are not duplicated. Other bytes do not need to be modified, but should not be modified. Be careful!

Restrictions

Changing a font block can indeed change the font, but in some cases it will be ineffective.

First, this method is not applicable if the executable file does not contain a font block. In addition, if a control in the main form has a font block, and the main form does not have a font block, only the font of the control can be modified.

Also, this method is not applicable if the program dynamically modifies the font at runtime.

Finally, it may be because of the English version. Although a program such as vopt99 does not have a font block in the form, the font size displayed is 8 (it should have been 9 ), at present, there is no way to solve this problem.

(After the font block of vopt99 is modified, the font of the splash form is normal; the font of the disk file distribution chart below the main form is normal; the font of the third graph box on the top can be modified, but there is a duplicate image, do not modify the label. The label font at the top of the fourth image box in the upper row is normal. The font of other parts is not normal. There are two possibilities: one is because it dynamically modifies the font at runtime, and the other is because there is an English mark somewhere, which I tend to think is the second case)

Outlook

After several days of consideration, I think the font block and other parts constitute a form block, and this form block is similar to Delphi's rcdata, that is, if we can understand the meaning of each part of a form block, we can modify VB resources like the current resources of Delphi. However, even though we have a clear understanding of the meaning of the form block, there is also a limitation, that is, the size of the modified form block must be smaller than that of the original form block. In this case, the editing of VB resources does not have the flexibility to use the Windows resource format as Delphi does, in addition, it should be the same.


Article 3: font block (200000005.24)

Heading forward

In the last outlook, the secret of some VB form blocks has been peeked over the past two days. Unlike the font block, the structure of the form block is too large to be thoroughly researched at the moment. I can only explain some of the current results, we also hope that more people will join us to study this project.

As I said last time, we can first determine that a form block exists, so we call it a form block. That is to say, when loading a form, the VB program actually only uses a pointer to the form block, how the form is displayed and displayed depends on the structure of the form block. In other words, the VB display form and control are based on the structure of the analysis form block, rather than being compiled separately as we previously imagined.

Vbprograms generally contain forms and modules, which are the same during compilation. Therefore, it can be said that the compiled executable files also have forms and modules, but the boundaries may be vague. However, we can still find out which forms and modules exist in a VB Executable File project. However, I do not have a good method for this currently, but I only rely on experience to judge it. There is only one inaccurate method: the "project name", "form name", and "module name" of VB are put together, separated by an indefinite number of "00.

On the other hand, as a form block, the 11 bytes before its "form name" can also be used as a judgment method (in fact, more than 11 bytes ). The first four bytes constitute a long integer, which indicates the size from the end of the entire form block; then the four bytes constitute a long integer that indicates the size of the form itself; the meaning of the last three bytes is unknown. I don't know if I have understood it. Specifically, the size of the form itself + the size of the control on the form = the size of the entire form block.

Just now, "In fact, there are more than 11 bytes", because a large number of "00" before these 11 bytes can also be used as a mark of judgment, before these "00", many bytes also belong to the form block, and many of them are the same, which is more suitable as a flag.

Looking back

Before proceeding to further research, I would like to stop and see if what we know can be used.

First, a form block is large, including controls on the form. In addition, the form block exists as a whole, and none of them exists independently.

Recall the limitations mentioned in my previous article: "If a widget in the main form has a font block and the main form does not have a font block, you can only modify the font of that widget ", if the form block exists as a whole, can we move the font block of the control to the main form?

Yes!

Ripple

Take vopt99 4.15 as an example. Here I am using the Weiping Chinese version. The last time I said that after the font block is modified, the main form cannot be displayed because there is no font block, the font of the "legend" box below the main form is displayed normally, so you can use it.

First, I learned that vopt99 contains a project "vopt99", three modules "ntvoptb", "ntvopt2b", and "ntvoptm" using the "uncertainty" method I just mentioned ", there are also five forms: ntvopthex, ntvoptf, xclean, settings, and splash ". It can be further determined that the main form is "ntvoptf ".

Find the font block of the "legend" box, because the "legend" box is a "picturebox" (you can obtain its "Class Name" through spy ++, this method can also determine whether the program is VB compiled), so we first use uedit to open vopt99.exe, and then find "39 01 00 00 90 01 ", the first font block is located in the "pichistof" control block, which is not what we are looking for. The second font block is located in "picmap", which is not what we are looking; then find the third font block. It's strange that it is in the legend. If this is my program, it's not surprising, but it's not. So this is the result of Chinese, however, it is wrong, because the name is not displayed here, but saved as the "name" attribute. If the "name" attribute is used in the program, such translation will lead to errors, so we should change it back to "legend" first ". (Which font block needs to be searched? I did a test and it was not the right one)

Now we can find the beginning of the font block and select the font block. Because it is "Arial", there are 17 bytes in total. Press Ctrl + X to cut it. Then, we can see that a long integer starting from the first 7th bytes of the Control name indicates the size of the control block. The original value is "40 00 00 00", which is reduced by 11 h, so it is changed to "2f 00 00 00 ".

Press "Ctrl + home" to return to the top of the file and search for the string "ntvoptf" again. Once found, because the overall size remains unchanged, therefore, the first long integer "C9 76 00 00" does not need to be changed, and the second long integer "5A 03 00 00" needs to be modified, with an increase of 11 h, so modify it to "6B 03 00 ".

There is a "vopt99" in the next line of the form name "ntvoptf". This is the "caption" of the form, and there are many messy things on the screen below. This is the form icon, turning it over, there is a "form1" after a string of "00". This is the "linktopic" of the form, which is related to DDE. Generally, DDE is not used in programs, therefore, it is generally useless, and programmers seldom care about it. The VB editor will automatically generate "linktopic" like "formn", so it can also be used as a judgment mark.

In the next two rows, there is "46 02 49 01 FF", and the cursor is stopped on "4" of "46, check whether uedit is pasted in "insert mode" by pressing "Ctrl + V. (Why before "46? I don't know. I have been tested several times. If you don't know anything, try it !)

Finally, modify the font block. Because it is picturebox, the original font block starts with "39" and is now a form. Therefore, change "39" to "40", and then change the charset to "86 ", then change the font size to 9, that is, "90 5f 01 00", and then change the font names to spaces. Storage disk.

Run. You can see that the font of the main form has been changed to ", 9.

(The "Settings" form is another important form in vopt99. It is used for both the dialog box and all the setting dialogs, but although the "Settings" is large, however, none of the controls have a font block, so you cannot modify it like this. Adding a font block requires at least 12 bytes, if you change "linktopic" to "null", you can only add 5 bytes, and the remaining 7 bytes are not included. Therefore, you cannot change the value currently. In the future, you can add a font block by accumulating the remaining bytes in the translation to the form .)


Article 4: Heavy encirclement (2000100005.29)

Out of nothing

As mentioned last time, for the "Settings" form, you can use the method of adding a font block to change the font. "Weiping" also asked: "Where is it added ?". I want to clarify first. The key is not to add the font block to where, but to delete bytes from other places. What are the string counters and control block counters that should be modified? Where are they?

Okay. Take the "Settings" form as an example. This time, the last modified file is used, so the offset is also subject to this.

Use uedit to open vopt99.exe. Jump to the offset "12480h" (for the sake of simplicity, the search process is omitted). We can see that this is the place where the "Settings" form name is located, but this form does not have an icon, there is no "caption" (in VB, there is no "caption" for a form without a title bar), so the next line is recognizable as "linktopic", that is, "form1 ". But let's put it down first, because we have no space to add the font block.

For the next two rows, You can see "frame1", and then the next row is the "caption" of the frame. Here it is "display parameter settings", which contains 12 bytes in total, however, the two bytes before "display parameter settings" are "13 00", that is, 19 in decimal format. Therefore, we can provide 19-12 = 7 bytes. Select the "00" of the 7 bytes after "display parameter settings" and press "Ctrl + X" to cut the cut (uedit does not work in this case ), then, change "13 00" to "0C 00" and click the next line. You can see "01 3f 00" after "FF". Here, "FF" is the ending sign of the previous "Block". It is the control site starting from "01, "3f 00" is the size of the control starting from "3f", so reduce it by 7 and change it to "38 00 ". Now we get 7 bytes.

Go down to "12589h" and you can see "displaycheck". Then, its title (Caption) "hides the large file list", which contains 14 bytes in total, the previous "string counter" is "14 00", that is, 20, so here we can get 20-14 = 6 bytes. Similar to the above example, cut the next six "00" and change "14 00" to "0e 00". Find the first "1257fh" of the "block, reduce the next two bytes "3f 00" by 6 and change them to "39 00 ". Now we have 6 more bytes and 13 in total. We can start to insert the font block.

Now we need to consider where the font block is inserted. Let's try it before "46" as we did last time.

At "12479h", the value here was the size of the form, and now it is "43 00 00 00", adding 13 bytes, it is "50 00 00". modify it. Now, find the end of the form, calculate 12479 H + 43 H = 124bch, and jump to "124bch". The first three bytes are "46 03 FF ", just insert it in front of "46. Copy 13 bytes at will, add "46" in "insert" mode, and change them to "40 01 86 00 00 90 01 90 5f 01 00 01 20" storage disk.

Okay. Now, let's choose "about" from the menu. What does it show? Invalid file format error!

It doesn't matter. We move the font block one byte, save the disk, and run it again. The "invalid file format" error occurs again. That's all right, again, move one byte forward, save the disk, and run again, how? -- Enjoy it!

Increased cost

Do you want to calculate the space required by the font block from the moment you steal it? Good. Let's get started.

Or vopt99. After "display parameter settings", there are three buttons: "Help", "cancel", and ...... "OK" is "OK". Let's continue.

The English format of "cancel" is "cancel", which consists of 6 bytes, while "cancel" only needs 4 bytes, which can save 2 bytes and can be sent to "OK ".

Jump to "12547h". Here is the "cancel" string counter, change it from "06 00" to "04 00", and cut the space added during the original translation to both sides, then, subtract 2 from the block counter at "12531h" and change it to "2D 00 ".

Jump to "12577h", insert two bytes before "OK", change these four bytes to "OK", and change the counter in front of it to "04 00 ", change "Block counter" at "1255fh" to "2D 00" to save the disk.

OK. Run the command and go to the "display parameter settings" mode. Have you seen it? The original "OK" has been changed to "OK ".

(Sometimes, some counters can run without modification, but you must keep the habit of modifying the counter. This is the first condition to ensure the normal operation of the program, this cumulative error may cause irreparable consequences. Be sure to pay attention to it !)

Growing troubles

Just now, when I entered the "display parameter settings" mode, I saw that "OK" has been changed to "OK". What else did I see? By the way, the "checkbox" title "hidden file distribution chart" is changed from one row to two because of the increase of the font, and none of the two lines are completely displayed, this is not a good result, but it cannot be said.

What should we do? Of course, it is to modify the width of the control.

Jump to "125c7h". Here is the position of the "Block counter" of the control where the "hidden file distribution chart" is located. Its value is "3f 00 ", so 125c7h + 3fh = 12606 h, and then jump to "12606h", "FF" is its end mark, and then 12 bytes forward, from then on, the 8 bytes are the position information of this "checkbox". Currently, it is "F0 00 D0 02 08 07 C3 00 ", the number of each two bytes is "Left", "TOP", "width", and "height". What we need to modify is "width ", it is "08 07", the decimal value is "1800", and it is changed to "2000", that is, "D0 07". Now, modify and save the disk.

Now, run it again and go to the "display parameter settings" mode. Is that good? You can continue to modify other items.

(Note: I have not listed the locations of all controls here, because it is difficult to find them, but if winhex is used, it is helpful because it shows the size of the 1-byte, 2-byte, and 4-byte decimal integer of the current cursor .)

Exotic collection

Yesterday, I saw a so-called vb5 online decompilation site. What is the URL ?!

This site can provide decompilation of less than 1 MB during the whole day from GMT to AM or Sunday, and only 50 kb for other times, so let's go between PM and PM Beijing time. (You can first package it in ZIP format)

It seems that someone has been studying this problem before, but he has positioned this kind of work on "decompilation", but eventually he can only "decompile" some forms, it may be disappointing, so it has not been updated since 98 years. (Chinese characters are not supported, but the English software is needed for decompilation)

Although it is impossible to compile a program decompiled into a normal executable file, it provides a lot of information, such as which strings need to be translated and which cannot be translated, the location information of a widget, and so on. (I really want to get its source code, so I don't need to study the structure of the form block any more. :)

(Today [5.29] I learned that vb5's decompilation program vb4tools can indeed decompile form information and functions in assembly language, but it is only effective for extremely simple programs and slightly complex programs, in The Decompilation process, errors may occur and exit, so that the problem can be avoided)

Final Fantasy

I just mentioned that recompilation is not allowed. In fact, it is not completely impossible to re-compile. Although there is no code, we can use the visual environment of VB to edit these forms (really great !), Modify the font, modify the title, modify the location, and re-compile the program. Although this program is not what we want, we can copy the form block, replace the form block of the original program. Note that the resulting form block is always different from the original form block. If it is larger than the original one, you need to modify the source code to reduce it and re-compile it. If it is smaller than the original one, you need to add some bytes in some parts of the form block to make the sum of the original form blocks as big, and then replace it. Fortunately, it is easy to add bytes. :)

Since the form can be decompiled, it is not very difficult to create the "ultimate Chinese tool" of VB. All the problems are just the workload.

Okay. Let me summarize it.

There are two resource formats in VB. One is what we call "form block" here, because all ASCII strings exist in the "form block", so there is no "ASCII string" resource; the other one is the Unicode string. You can use the "string replacement" compiled by me to find all such Unicode strings (which refer to Unicode strings in VB format, some Unicode strings in VB executable files are not in the VB format, but these strings are not displayed and do not need to be translated. Therefore, my "string replacement" does not extract these Unicode strings, it is not extracted even when "Unlimited search" is used .). Can be translated, the string in the form block can change the length, but the Unicode string cannot be modified longer than the original string.

(VB Programs can also use resources in the standard Windows format, that is, resources in the VC format. However, even if you use resources such as dialog, there will not be resources such as dialog, menu, accelerator, but only resources such as string or bitmap. You can use the standard resource editor for localization, however, because VB itself cannot edit such resources, it generally uses VC to edit, compile, and then link to the VB program. I don't think such resources belong to VB resources)

At this point, I think the problem of font blocks has completely ended. In addition, I can also say that I have solved all the basics of VB in Chinese (using these skills can already be used to develop more than 95% of VB Programs in Chinese, if you want to perfect the other 5%, you may need some programming experience, this article is not only the end of my font research, but also the final article about VB Chinese.

(In addition, today [5.29] I learned that a Tao from the Chinese studio at the new starting point has also studied the modification of the VB font, and there is a method I have not found to modify the font, it is recommended that you take a look at it as well as those who are working on VB .)


Additional: Issues in Chinese (VB) (2000.07.16)

How to judge programs written in VB

In the articles written by Wei Qian and YY about the localization of VB, he introduced how to judge programs written by VB, where fileinfo is used.

Fileinfo can be used to determine a lot of information about a program, including how to compress, encrypt, base address, segments, and their offsets. Of course, it can also be used to determine which compiler is used to compile a program, really good.

Recently I used the chime tray play in YY Chinese. I thought it was written in VB, but the fonts of the forms are very small, so I am quite surprised, I have already written four articles to address this problem, and a Tao has also written an article. It is not a problem to modify the font of the VB program. Why didn't I modify it? So I used fileinfo to check the original program and found that fileinfo reported that this is a Windows GUI program, not a VB program. Is it a VB program?

The original program of chime tray play only has a file named “trayplay.exe ". You can use fileinfo to know that this program uses neolite 2 for compression. Therefore, you can use procdump to decompress the program. After using fileinfo to detect and decompress the program, you will find that it. However, you can use other methods to check the vulnerability.

Run exescope, open the corresponding trayplay.exe "behind the decompressed file, and open" import ". Here is the program function import table. If it is a program written in vb5, it will contain msvbvm50.dll. If it is a program written in VB6, msvbvm60.dll will be included, and the calling format of msvbvm60.dll is not published because it is a special Runtime Library for Vb, so it is certain that the program using msvbvm50.dll must be written in vb5, the program using msvbvm60.dll must be written in VB6. In addition, most vbprograms only import this dynamic link library. Other API calls are defined using "declare", rather than using import tables, including vopt99. (My program will usually generate one or two more databases. This is the result of using the local database. There will not be many other libraries, but trayplay.exe "is exactly the same and there is only one msvbvm60.dll import, which is basically written in VB6. (Vb4 uses vbrun40.dll and vb3 uses vbrun30.dll, but there are very few Chinese programs that interest you)

Another method. Run a program written in VB. After the main interface is displayed, use the search window mode of spy ++ (software included in VC, drag the target icon to the interface of the target program. Pay attention to the value of the "class" item. If it is thunderrt5xxxx, it indicates that it is a program written in vb5. If it is thunderrt6xxxx, it indicates that it is a program written in VB6. The last XXXX represents different controls. For example, the "class" item of ListBox in the program written in vb5 is thunderrt5listbox, in the textbox program written in VB6, the "class" item is thunderrt6textbox. For example, trayplay.exe is not easy to use, because if you select another program, its main form will be automatically hidden, making it difficult to detect, but you can select the "associate" button first, when a message box appears, you can switch to another program and it does not disappear, so you can detect it. The results also show that it was written in VB6. (This test can also be performed using my "Assassin" program. Although it is not powerful than spy ++, it is much more convenient for such tasks. In "Assassin", "Class Name" is "class ")

There is another way. As stated in a Tao's article about VB localization, you only need to find "vb5!" In the vb5/6 program !" You can find the location where the 22 bytes need to be copied, because there will only be one "vb5 !". If there is only one "vb5!" in the program written in VB !" Then other programs include "vb5 !" The possibility is almost zero, isn't it? :)

It should be noted that this does not mean that the fileinfo detection is inaccurate. The problem here is actually caused by procdump. It must have changed some structure of the file during decompression, in this way, fileinfo may fail to be correctly detected. Therefore, if there is a dedicated decompression program, do not use the general decompression program, such as procdump. (Currently, many programs use ASPack 2.1 for compression. It is not good to decompress this file using procdump, or even use the new INI file provided by the new century in the Chinese language, unaspack 1.091 can be used to decompress such files. Try to use unaspack 1.091 to decompress files compressed by ASPack 2.1 .)

Modify the font size of the VB Program

About VB program ", the result program cannot run, it is really strange.

In the original article of a TAO, 22 bytes are copied, while the figure shows 44 bytes. However, this is a small problem. The question is, what is the purpose of copying these multiple bytes?

I don't know how useful it is, so further testing finds that you don't need to copy these bytes at all, but you just need to add the "vb5chs. dll" string.

Find "vb5!" In the “trayplay.exe file !", After finding it, the third byte to the back is "*", the hexadecimal value is "2a", followed by a large string of "00 ", modify "vb5chs" from the beginning. DLL, the program can normally display "9, 9.

For programs written in VB6, you can change it to "vb6chs. DLL, but even if it is changed to "vb5chs. "DLL" is no problem, it also allows the program to display ", 9" normally, because it is vb5chs. DLL or vb6chs. DLL is not the place where the code is located. They only provide some resources. Even if these resources are not available, the program can run as usual.

Question about copyright symbols

This is not a problem of VB, but a problem of all English software. However, here we also use a VB program as an example.

Open vopt99 and select "Help-> about vopt99". The first line of information is "Copyright? Golden Bow System ", it is strange that there is a"? ", Do I have any questions about the copyright information? Of course not. Actually, here is "?" It is a copyright symbol because it uses ASCII code greater than 7f (A9) and Its Encoding conflicts with GBK, in Windows, if an invalid character is found during the conversion process, the conversion function converts it to "? ", So this copyright symbol becomes "?". Because the GBK encoding does not contain the copyright symbol, it is inconvenient. Many programs use "(c)" instead, it is a good choice. It should also be the case in Chinese, rather than "?" Stay there or simply convert it to "?". In this case, you may also need to pay attention to the registered trademark (AE.

For most C Programs, because it is ASCII, if a string such as "Copyright Golden Bow System" is invalid, therefore, many programs that search for ASCII cannot find this string, and my string replacement is no exception. The found string will be "Golden Bow System ".

For VB Programs, it may be ascii or Unicode, depending on the method used to set attributes in IDE (ASCII ), or use the value assignment method (UNICODE) in the program ). Here, vopt99 uses Unicode and is divided into two parts: "Copyright" and "Golden Bow System ", this is because "Golden Bow System" is obtained from the resource version information. Because the invalid character in "Copyright" is at the end, I cannot use the string replacement tool to find this string no matter whether I use the VB string or Unicode string, only the "unrestricted search" mode of the VB string can be found. (The "Unlimited search" mode has many invalid characters, while many items have many "?" It is precisely for this reason that it is not "?".)

For ASCII, because my string replacement tool does not provide the "Unlimited search" mode, it cannot be found normally. You can only use the manual search and modification method.

Of course, the copyright information of many C Programs is stored in resources. Therefore, you can use common resource modifiers (such as exclusive and reshacker) to find and modify them without the need for such problems. However, modification is required. Do not doubt the copyright of the software used.

The copyrighted symbols in Unicode mode may be properly displayed in NT/2000, but this requires that all Unicode functions are used, VB in NT/2000 seems to use the Unicode to convert to ASCII first, and then convert from windows to Unicode, so it still cannot be displayed normally. However, I have not verified it on NT/2000.

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.