Hi All,
I need to convert a Assembly Code to high level languages such as C/C++, C#, .Net vs vs.

I found a website that converts it but with very very high price. I am looking for a simple program which tries to convert assembly to high level language. I say "tries" because it can have mistakes, I can correct them, but I need to get a idea or help.

Thanks anyway.

Dani AI

Generated

A short, practical companion note for this thread.

Converting readable, commented assembly into maintainable C/C++ is mainly an annotation and reconstruction task: tools help, but human decisions about calling conventions, data types and intent are what make the result usable. ’s point about decompiler output being noisy is accurate, and ’s observation that small hand-written routines are easiest to reimplement holds true. The following workflow outlines an efficient, low-risk approach.

  1. Identify function boundaries and calling convention (prologue/epilogue patterns, preserved registers).
  2. Annotate parameters and locals by tracking stack offsets and register usage across calls.
  3. Reconstruct control flow: convert conditional jumps and backward jumps into if/else and loop constructs; detect jump tables for switch/case.
  4. Recover data types by observing access sizes (byte/word/dword) and repeated offsets; group related offsets into structs.
  5. Produce readable C using explicit types (uint8_t/uint32_t), named variables, and small helper functions rather than one big monolithic translation.
  6. Validate behavior with unit tests, sample inputs, or by diffing generated assembly—expect functional equivalence rather than byte-for-byte identity.

Useful aids include modern disassemblers/decompilers to speed annotation, but all automatic output needs manual correction. For protection strategies (relevant to the OP’s probation task): strip symbols, use compiler optimizations and link-time options, move sensitive logic off-device, and consider obfuscation/packing—bearing in mind no measure is foolproof and legal permission must be confirmed before reverse engineering third-party binaries.

Recommended Answers

All 3 Replies

Are you talking about actual assembler code, as written and commented by a human?
Which is what the tool you referenced would seem to need.

Or the disassembler output (devoid of comments) as output by say dumpbin ?
In which case, you're pretty much hosed.

Whilst decompilers exist, the result is not something you would want to maintain (or look at). Everything will be called var1, var2, var3 etc.

I am talking about actual assembler code, as written and commented by a human. And the conversation a big code is my job in the probation. Do not understand wrong, I do not try to use a dissambler output and stole someone's work.

I want a program because at first part they want me to convert a hex code to assembly, secondly they want me to find is there any way to reach to higher level code to assembly code. And my real objection in probation is protect a program ( in .exe position ) to steal source code. I want to learn how these converters work than I will try to find a solution to my problem.

If you are suspicious about my truth, you can explain me just how these converters work and how we can prevent our codes from these type of steals.

Thanks anyway.
I am waiting for your response.

There are two reasons for writing in assembly (besides having fun!) and those are to take advantage of the speed possiblities and/or interface to something not otherwise easily interfaced to.

Hand-coded assembly ususally consists of a few instructions (<=25) so it's not all that difficult to grasp the logic.

It could be that the assembly code you have is the startup code for your program and then I recommend not touching it.

If the code does not interface anywhere and appears to be written solely for speed, it should be relatively easy to convert it by hand to C code.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.