|
Answer» Hi
I'm new to programming & would really appreciate some help with modifying an existing C++ program.
I'm using XVI32 hex editor & I'm looking at the following:
I'm presuming that the names at the bottom (Aston Villa Man Utd etc) have all been assigned to one of the variables (if that's the terminology) above, for example a$=Aston Villa b$=Man Utd etc.
So how do I find which is represented by which? there are exactly 80 names so I'm guessing there's 80 variables, but I don't know where to begin. Once I find which is ASSOCIATED with what, I then have to find those representations in another part of the program... is there an easier way to do this?
Thanks guys...What you really want to do is "Reverse Engineer" the binary file and that's a job for someone with a high level of knowledge and experience. Below is an extract from this site.
"Software reverse engineering is done to retrieve the source code of a program because the source code was lost, to study how the program performs certain operations, to improve the performance of a program, to fix a bug (correct an error in the program when the source code is not available), to identify malicious content in a program such as a virus or to adapt a program written for use with one microprocessor for use with another. Reverse engineering for the purpose of copying or duplicating programs may constitute a copyright violation. In some cases, the licensed use of software specifically prohibits reverse engineering.
Someone doing reverse engineering on software may use several tools to disassemble a program. One tool is a hexadecimal dumper, which prints or displays the binary numbers of a program in hexadecimal format (which is easier to read than a binary format). By knowing the bit patterns that represent the processor instructions as well as the instruction lengths, the reverse engineer can identify certain portions of a program to see how they work. Another common tool is the DISASSEMBLER. The disassembler reads the binary code and then displays each executable instruction in text form. A disassembler cannot tell the difference between an executable instruction and the data used by the program so a debugger is used, which allows the disassembler to avoid disassembling the data portions of a program. These tools MIGHT be used by a cracker to modify code and gain entry to a computer system or cause other harm."
Here is a forum discussion of CM93, DiscoG has posted a link to an "Editor". Hope this is of some use to you.
My best advice is to use the Hex Editor to modify the binary then find out what the results are.
Good luckHey thanks for your reply Dusty, it's been lonely here...
Bit strange how you knew it was CM93
I have tried the editor but it unfortunately only allows me to change a few things (player ability/age)
Let me just run what I'm guessing here... see if it would make sense to you. I'm thinking there's a variable for a team then each player for that team with several items of information for that player.
For example:
Team name=$$ number of players=$$ player name 1=$$ player 1 age=$$ player 1 nationality=$$ player 1 Ability=$$
I can change names no problem, but I'm changing the target, so if I change John Barnes to Steven Gerrard then John Smith will also change to Steven Smith & Paul Barnes will become Paul Gerrard (sorry to be over explaining stuff that nobody has any interest in reading).
I think I need to find exactly in the program where a) the data for the team is b) the targets for the team data 3) targets for player data.
But I'm getting way ahead of myself... maybe you could be so kind to help me out with some very basic stuff first?
So binary.... is that the squigally *censored*? I'm guessing the squigals are representations of lines of code? like if I write: Let a$=b$-c$, that would be end up as ~o viewed in a hex editor?
So does a dissembler let me 'open up' the squigally *censored* to see the code?
Thanks...Well, hmmmmm, let me try.
The 'squiggly' things are the XVI32 program's interpretation of the binary code. As you will know everything is stored as a binary representation and the character printed is selected from the ASCII character codes. e.g. if you go to the very first character displayed at location 0 you will find an upper-case M. This is stored as binary 01001101 which translates to hexadecimal 4D which in turn is decimal 77. The ASCII Regular and Extended codes can be seen here. If a character cannot be determined then the hex editor prints a symbol, in the case of XVI32 it is a square box.
A fun binary converter can be seen here.
Quote I can change names no problem, but I'm changing the target, so if I change John Barnes to Steven Gerrard then John Smith will also change to Steven Smith & Paul Barnes will become Paul Gerrard (sorry to be over explaining stuff that nobody has any interest in reading). I understand your problem. I searched the binary and found that the name John appears at location 52D85 (and at least a further three locations). This is the sixth christian name in the display. Starting at location 54E00 is the surname Deeham. This is the sixth surname in the display. Is it possible that the two are linked and if you change the John at 52D85 to Fred the name will be changed to Fred Deeham? In other words is the sixth christian name linked to the sixth surname? You must manually edit individual names, the Replace option cannot be used or all occurrences will be changed.
QuoteSo binary.... is that the squigally sh*t? I'm guessing the squigals are representations of lines of code? like if I write: Let a$=b$-c$, that would be end up as ~o viewed in a hex editor?
So does a dissembler let me 'open up' the squigally sh*t to see the code? Yes and No. The source code, which is what you really want, has been compiled into machine language. Here is a description of what a disassembler can achieve. I know of no disassembler which will return machine language to its original programming language. Then, of course, theres a decompiler.. If this was easy then every program EVER written and compiled could be reverse engineered and modified to suit every user. We'd all be doing it.
Read this from my EARLIER post again QuoteAnother common tool is the disassembler. The disassembler reads the binary code and then displays each executable instruction in text form. A disassembler cannot tell the difference between an executable instruction and the data used by the program so a debugger is used, which allows the disassembler to avoid disassembling the data portions of a program. and QuoteBy knowing the bit patterns that represent the processor instructions as well as the instruction lengths, the reverse engineer can identify certain portions of a program to see how they work. There are many free disassemblers/decompilers on the WWW.
Good luck
|