?
Solved

Exe to binary string

Posted on 2003-11-07
4
Medium Priority
?
1,247 Views
Last Modified: 2012-05-04
Hey all! I have a small problem.

I need to convert a win32 executable to a binary string, that will be displayed in a memo, in the following format: 00,032,234,123,etc,etc,etc

Could someone help me? If you make a function, where i input the path to the file, and it returns it as one long string, that'd be great. Oh, the max filesize would be around 2/3 MB... But if you can make it work for any file, that'd be great!
0
Comment
Question by:Otis_04
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 2

Expert Comment

by:Kalroth
ID: 9706777
I just wrote some code that should do it for you.
It's smart in the sense that it doesn't use any buffering, apart from the result string and it should be fairly fast too.

Basically it allocates the string, loads the file in the upper half of the string and then converts the raw data in the upper half to heximal text in the lower half.

Good luck with your project!

(** CODE **)
function FileToHexString(const Filename: String): String;
var
  InputFile : TFileStream;
  InputSize : Integer;
  Middle : PChar;
  Counter : Integer;

  // Taken from KOL, http://xcl.cjb.net/
  function HexDigit( B : Byte ) : Char;
  asm
     CMP  AL,9
     JA   @@1
     ADD  AL,30h-41h+0Ah
  @@1:
     ADD  AL,41h-0Ah
  end;

begin
  if FileExists(Filename) then
  begin
    InputFile := TFileStream.Create(Filename, fmOpenRead);
    try
      InputSize := InputFile.Size;
      // Set length of result, to avoid
      // .. slow dynamic allocation in a loop.
      SetLength(result,InputSize*2);
      // Read the file into the HIGH half
      // .. of the result buffer
      // The buffer will look something like this:
      // |................DATADATADATADATA|
      Middle := @result[InputSize+1];
      InputFile.Read(Middle^,InputSize);
      // Now lets loop through the buffer and
      // .. convert raw data from the middle to
      // .. heximal data in the beginning
      for Counter := 0 to InputSize-1 do
      begin
        result[(Counter*2)+1] := HexDigit((Ord(Middle[Counter]) shr 4) and $F);
        result[(Counter*2)+2] := HexDigit(Ord(Middle[Counter]) and $F);
      end;
    finally
      InputFile.Free;
    end;
  end;
end;
(** /CODE**)
0
 

Author Comment

by:Otis_04
ID: 9708349
WOW... Uhm, when i run that, and put the results of converting calculator into a memo, i get this:

ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏ

etc.... theres alot more than that though... I need it to be binary string... I need it to give me the binary string, so i can insert it into a vbs, because the vbs creates a exe from the binary string. Here is the array i need to put it into:

array= array(77,90,68,1,5,0,2,0,32,0,33,0,255,255,117,0,0,2,0,0,153,0,0,0,62,0,0,0... etc)

I want to put the binary string in that array, replacing the old one... maybe if you seperate the values with a comma too, that'd be great.
0
 

Author Comment

by:Otis_04
ID: 9709383
Well, i found my wqays in another language, thanks alot though :D
0
 

Accepted Solution

by:
SiC_O earned 200 total points
ID: 9711226
Well, Otis_04, you tried in vb, you tried in delphi, just give up. Wait for someone else to code it for you.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
In this video you will find out how to export Office 365 mailboxes using the built in eDiscovery tool. Bear in mind that although this method might be useful in some cases, using PST files as Office 365 backup is troublesome in a long run (more on t…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…
Suggested Courses
Course of the Month9 days, 17 hours left to enroll

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question