Home | Blog | Software | Reviews and Features | Forum | Help | Donate | About us
topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 04, 2016, 08:21:04 AM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: Can a program be reverse-engineered?  (Read 5268 times)

zridling

  • Friend of the Site
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 3,292
    • View Profile
    • Donate to Member
Can a program be reverse-engineered?
« on: April 13, 2006, 03:57:44 AM »
As a non-coder, I'm curious: can a program — say a small, abandoned utility program — be opened up and and rebuilt, or improved upon? I always thought that once a program was compiled, it was inviolate. What's the scoop?

lanux128

  • Global Moderator
  • Joined in 2005
  • *****
  • Posts: 6,258
    • View Profile
    • Coding Snacks by Lanux128
    • Read more about this member.
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #1 on: April 13, 2006, 04:22:33 AM »
AFAIK unless you know assembly language there's not much that can be done because decompilers spit out the source in machine language. there are some exceptions like compiled AHK scripts but that's about it.

there is a program called ResHacker that allows you to alter resources such as icons & bitmaps for some apps.
which abandoned program have you in mind, zridling? :tellme:

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #2 on: April 13, 2006, 04:32:28 AM »
you can be certain there is a huge active underground community of people dedicated to reverse engineering any technology, whether its phones, trains, or software.

there are some well known examples of reverse-engineering software to add features, though most of the time it's done to defeat copy protection mechanisms.

i'm looking forward to reading some replies with good links to read.

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #3 on: April 13, 2006, 05:20:06 AM »
http://f0dder.reteam.org :)

The DOS versions of the UFO/XCOM games don't run well/at all under NT, and the windows versions were programmed by DirextX newbies and end up with garbled graphics on most modern machines. I bugfixed this without having the source available.

That's just a *small* example of what can be done, if you've got the time and dedication the sky's the limit. I know of a guy that re-implemented the entire HASP (iirc) dongle driver... but that wasn't necessarily for "decent" purposes.
- carpe noctem

Edvard

  • Coding Snacks Author
  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 2,888
    • View Profile
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #4 on: May 05, 2006, 12:22:11 PM »
Google for "decompiler". Shellcity has listed a few here. Debuggers have often been used for such a purpose (SoftIce being a favorite of some crackers I've heard of...) AnalogX has a tool called TextScan that may be useful.
Quote
"...AnalogX TextScan searches any binary file for a minimum and maximum string length, and then returns all occurrences in sorted order, but it doesn't just stop there..."

mrainey

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 436
    • View Profile
    • Website
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #5 on: May 05, 2006, 12:29:34 PM »
This whole site appears to be dedicated to reverse engineering.


http://www.reteam.org/index.html


Oh, I see somebody beat me to it.  How do I delete a post?
Software For Metalworking
http://closetolerancesoftware.com
« Last Edit: May 05, 2006, 12:31:49 PM by mrainey »

Veign

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 993
    • View Profile
    • Veign - Where design meets development
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #6 on: May 05, 2006, 02:08:20 PM »
Alot depends on the programming language used.  Some, you will only be able to get back to assembly code while others you can get back the original code.  I know there are decompilers that can work with DotNet code and you can get back to the higher level code.  For Visual Basic (6.0 and other 32bit versions) the best you can get to is a structured assembly code - structured meaning the original methods, classes, and forms can be gotten but the code is assembly.

To identify the programming language of an application you can try Language 2000 - a bit old but still may work for abandoned applications.

To see the guts of an application you can use OllyDbg.  I use this application to poke around and see what's going on inside of an application.

To decompile a DotNet application check out Reflector.  Also, check out some of the other tools this developer offers.

This is something I had a lot of interest in a time back.  I found some very cool applications that I would have loved to continue the development of but I could not get a hold of the original developer.  Some applications really shouldn'y die because the developer stops. 

This would be a great idea for a website.  Donate your applications and source code and the site assigns a new developer to take it over.  Provide a review process to make sure the next developer inline can do it and will put it back into the 'safe' when they won;t develop it anymore.  Kinda like open source except its trusted to a single developer.  I know when my time comes I would like to have someone take over and benefit from Veign

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #7 on: May 05, 2006, 02:55:32 PM »
For Reverse Engineering, nothing beats the Interactive DisAssembler, IDA. It's a tool that goes way beyond what kiddies use to just remove software protection, it's a genuinely useful tool to look at the insides of programs.
- carpe noctem

Veign

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 993
    • View Profile
    • Veign - Where design meets development
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #8 on: May 05, 2006, 03:00:27 PM »
For Reverse Engineering, nothing beats the Interactive DisAssembler, IDA.

At $439 US (Std Edition) its a bit expensive...

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #9 on: May 05, 2006, 03:05:53 PM »
Indeed it is. I got 50% student discount when I ordered mine, though :) - too bad my support plan has expired.
- carpe noctem

jgpaiva

  • Global Moderator
  • Joined in 2006
  • *****
  • Posts: 4,727
    • View Profile
    • Donate to Member
Re: Can a program be reverse-engineered?
« Reply #10 on: May 05, 2006, 07:21:11 PM »
Oh, I see somebody beat me to it.  How do I delete a post?
Check this thread for a few hints on how to get rid of an erroneous post: how to delete your post.