473,386 Members | 1,810 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

Disassembly of C binary

Hello,

My company recently purchased source code from a company we have been
doing business with for several years. In the past, they have done all
of the development for this product. Their business had dwindled to
the point where we were the last company to use their software so we
purchased the source and brought development in house.

We have now found that our source is out of date for one of the
components. The component was last updated in February of 2002;
version 1.2.2. Our source (for this component) is for January of 2002
version 1.1.2.

This company has not been able to yet locate the source. They had
several temporary contractors work on the code over the years, and
version control apparently was not properly enforced.

We have the binary, and perhaps fortunately, it is a debug build (built
in VC++ 6.0).

Over the years I've always believed that shipping product with debug
symbols embedded would allow a person enough information to actually
reverse engineer the binary and steal source, but when I have done
preliminary disassembly of this particular component, I see nothing
extraordinarily useful.

This particular component has only 4 source files, no libraries linked
in, and is relatively small.

Is there a tool that can utilize this debug info and rebuild this
source? Is there a different approach that anyone can think of? I
have played with a decent one (REC;
http://www.backerstreet.com/rec/rec.htm), but have not yet fully
explored its possibilities.

This may be our only alternative if the company can't produce the
source. The bugs between versions were small, but typically critical.

Any input is appreciated.

Thank you!

Jan 10 '06 #1
6 5029
Caveman wrote:
Hello,

My company recently purchased source code from a company we have been
doing business with for several years. In the past, they have done all
of the development for this product. Their business had dwindled to
the point where we were the last company to use their software so we
purchased the source and brought development in house.

We have now found that our source is out of date for one of the
components. The component was last updated in February of 2002;
version 1.2.2. Our source (for this component) is for January of 2002
version 1.1.2.

This company has not been able to yet locate the source. They had
several temporary contractors work on the code over the years, and
version control apparently was not properly enforced.

We have the binary, and perhaps fortunately, it is a debug build (built
in VC++ 6.0).

Over the years I've always believed that shipping product with debug
symbols embedded would allow a person enough information to actually
reverse engineer the binary and steal source, but when I have done
preliminary disassembly of this particular component, I see nothing
extraordinarily useful.

This particular component has only 4 source files, no libraries linked
in, and is relatively small.

Is there a tool that can utilize this debug info and rebuild this
source? Is there a different approach that anyone can think of? I
have played with a decent one (REC;
http://www.backerstreet.com/rec/rec.htm), but have not yet fully
explored its possibilities.

This may be our only alternative if the company can't produce the
source. The bugs between versions were small, but typically critical.

Any input is appreciated.

Thank you!


I'd suggest posting on a Microsoft-specific newsgroup, where you're
likely to get more specific help. See this FAQ for a list of other
groups:

http://www.parashift.com/c++-faq-lit...t.html#faq-5.9

Cheers! --M

Jan 10 '06 #2


Caveman schrieb:
Hello,

My company recently purchased source code from a company we have been
doing business with for several years. In the past, they have done all
of the development for this product. Their business had dwindled to
the point where we were the last company to use their software so we
purchased the source and brought development in house.

We have now found that our source is out of date for one of the
components. The component was last updated in February of 2002;
version 1.2.2. Our source (for this component) is for January of 2002
version 1.1.2.

This company has not been able to yet locate the source. They had
several temporary contractors work on the code over the years, and
version control apparently was not properly enforced.

We have the binary, and perhaps fortunately, it is a debug build (built
in VC++ 6.0).

Over the years I've always believed that shipping product with debug
symbols embedded would allow a person enough information to actually
reverse engineer the binary and steal source, but when I have done
preliminary disassembly of this particular component, I see nothing
extraordinarily useful.

This particular component has only 4 source files, no libraries linked
in, and is relatively small.

Is there a tool that can utilize this debug info and rebuild this
source? Is there a different approach that anyone can think of? I
have played with a decent one (REC;
http://www.backerstreet.com/rec/rec.htm), but have not yet fully
explored its possibilities.

This may be our only alternative if the company can't produce the
source. The bugs between versions were small, but typically critical.

Any input is appreciated.

Thank you!

Jan 10 '06 #3
In comp.lang.c mlimber <ml*****@gmail.com> wrote:
I'd suggest posting on a Microsoft-specific newsgroup, where you're
likely to get more specific help. See this FAQ for a list of other
groups: http://www.parashift.com/c++-faq-lit...t.html#faq-5.9


As long as FAQs are being posted, the comp.lang.c FAQ will also be
helpful to OP:

http://www.ungerhu.com/jxh/clc.welcome.txt
http://c-faq.com
http://benpfaff.org/writings/clc/off-topic.html

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
Jan 10 '06 #4

"Caveman" <mr********@yahoo.com> wrote in message
news:11**********************@g43g2000cwa.googlegr oups.com...
We have now found that our source is out of date for one of the
components. The component was last updated in February of 2002;
version 1.2.2. Our source (for this component) is for January of 2002
version 1.1.2.

This company has not been able to yet locate the source. They had
several temporary contractors work on the code over the years, and
version control apparently was not properly enforced.

We have the binary, and perhaps fortunately, it is a debug build (built
in VC++ 6.0).


What I'd do is compile the 1.1.2 version that you do have, and disassemble
it. Then compare the disassembly with the 1.2.2 binary. This should
drastically reduce the effort needed to reconstruct the 1.2.2 source.

Walter Bright
www.digitalmars.com C, C++, D programming language compilers
Jan 10 '06 #5
On 10 Jan 2006 07:01:32 -0800, in comp.lang.c , "Caveman"
<mr********@yahoo.com> wrote:

(of reverse engineering some binaries).

This is known as the hamburger-back-into-cows problem. Its just as
tricky - can make a cow-shaped object, but it won't moo.

There exist professional companies and software to do this. Its not
cheap. There's a sourceforge project too, but how effective it is,
depends very heavily on the original code. With anything complex,
forget it.

Either way, expect to do a LOT of hand-crafting, and expect it to be
easier to understand what the code does, and rewrite it from scratch.
Mark McIntyre
--

----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----
Jan 10 '06 #6
Caveman wrote:

My company recently purchased source code from a company we have
been doing business with for several years. In the past, they
have done all of the development for this product. Their
business had dwindled to the point where we were the last
company to use their software so we purchased the source and
brought development in house.

We have now found that our source is out of date for one of the
components. The component was last updated in February of 2002;
version 1.2.2. Our source (for this component) is for January
of 2002 version 1.1.2.

This company has not been able to yet locate the source. They
had several temporary contractors work on the code over the
years, and version control apparently was not properly enforced.
We have the binary, and perhaps fortunately, it is a debug build
(built in VC++ 6.0).

Over the years I've always believed that shipping product with
debug symbols embedded would allow a person enough information
to actually reverse engineer the binary and steal source, but
when I have done preliminary disassembly of this particular
component, I see nothing extraordinarily useful.

This particular component has only 4 source files, no libraries
linked in, and is relatively small.

Is there a tool that can utilize this debug info and rebuild
this source? Is there a different approach that anyone can
think of? I have played with a decent one (REC;
http://www.backerstreet.com/rec/rec.htm), but have not yet fully
explored its possibilities.

This may be our only alternative if the company can't produce
the source. The bugs between versions were small, but typically
critical.

Any input is appreciated.


Provided you have the identical compiler/linker/libraries, you can
experiment with source modifications to produce the same binary as
you now have. This is highly system specific, and not topical for
this group. You have a fair chance since this is C and not C++

If you want expensive help to achieve this, contact me directly via
the reply-to address in this header.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers." - Keith Thompson
More details at: <http://cfaj.freeshell.org/google/>
Jan 11 '06 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: leon | last post by:
Hello everybody. The question is easy, are there some powerful tool to do disassembly to dll files, that were create in C# ? Thanks by great help... leon.
0
by: C Newby | last post by:
I don't know what i did, but when I run a windows form application from the Visual Studio debugger, a new tab shows up in the main document tab space with the title "Disassembly". This, as i...
0
by: wurlds_wurst_coder | last post by:
A co-worker apparently checked the Show Disassembly Automatically checkbox at some point. This is really inconvenient to disassemble every dll we use everytime. How do I turn this option OFF??...
2
by: kjon | last post by:
When I try to run any project, sometimes I will encounter this tab window in the IDE which has the following message: "Disassembly cannot be displayed in run mode". I mean it'll show sometimes,...
4
by: Matthew | last post by:
I had an error in a program I was working on. A dialog box came up saying "do you want to view Disassembly?" I clicked OK just for the fun of it, and now every time I run the program it opens a...
6
by: Caveman | last post by:
Hello, My company recently purchased source code from a company we have been doing business with for several years. In the past, they have done all of the development for this product. Their...
2
by: cj | last post by:
Recently for no apparent reason VB 2003 has been opening a Disassembly tab along with Form1.Vb, Start Page, etc. The Disassembly tab has in it Address and a text box followed by (Enter an address...
1
by: Nathan Mates | last post by:
I'm using VS.NET 2005SP1 (C++ Express, though I've also seen this on 2005 Standard SP1). One bit of behavior that's been bugging me a lot, and seems to have gotten worse with SP1, is that if it...
11
by: Herhor | last post by:
Hello! I have already started C++ programming with VC++ 2005 Express Edition. Unfortunately during debugging one of my first programs I had to unintentionally enable some debugger configuration...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.