Flag: Tornado! Hurricane!

 Forums >>  Brainstorms - General  >>  Understanding compilers ASM output

Topic created on: April 11, 2013 10:50 CDT by nopsledshell .

i would like to get information about the output generated from two compilers (GCC and Visual CPP) - what the code below do? what was the original source code? what is the difference between those two compilers when generating the assembly code?

gcc:
mov edx, [ebp+var_4]
mov eax, edx
add eax, eax
add eax, edx
shl eax, 2
add eax, edx
mov [ebp+var_8], eax

Visual CPP:
mov ecx, [ebp+var_4]
sub ecx, 1Eh
neg ecx
sbb ecx, ecx
mov [ebp+var_C], ecx

  codeinject     April 12, 2013 02:03.01 CDT
Please read http://www.binary-auditing.com/

  nopsledshell   April 14, 2013 02:32.20 CDT
Binary Auditing is a large and detailed, any particular part? module? exercise?

i don't have the HLL code to compare but i can guess that those two code parts calculate something as function of [ebp+var_4]

the first code looks like multiply of 13 (which suitable to this size of data structure) and the result is in  [ebp+var_8]
correct?

the second looks like calculating one bit (0 or -1) and the result in [ebp+var_c]
correct?

it was taken from Chris Eagle slides (Black Hat few years ago)

Note: Registration is required to post to the forums.

There are 31,310 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
hi!
Jul/01
let 'IDAPython' impo...
Sep/24
set 'IDAPython' as t...
Sep/24
GuessType return une...
Sep/20
About retrieving the...
Sep/07
How to find specific...
Aug/15
How to get data depe...
Jul/07
Identify RVA data in...
May/06


Recent Forum Posts
Finding the procedur...
rolEYder
Question about debbu...
rolEYder
Identify RVA data in...
sohlow
let 'IDAPython' impo...
sohlow
How to find specific...
hackgreti
Problem with ollydbg
sh3dow
How can I write olly...
sh3dow
New LoadMAP plugin v...
mefisto...
Intel pin in loaded ...
djnemo
OOP_RE tool available?
Bl4ckm4n


Recent Blog Entries
halsten
Mar/14
Breaking IonCUBE VM

oleavr
Oct/24
Anatomy of a code tracer

hasherezade
Sep/24
IAT Patcher - new tool for ...

oleavr
Aug/27
CryptoShark: code tracer ba...

oleavr
Jun/25
Build a debugger in 5 minutes

More ...


Recent Blog Comments
nieo on:
Mar/22
IAT Patcher - new tool for ...

djnemo on:
Nov/17
Kernel debugger vs user mod...

acel on:
Nov/14
Kernel debugger vs user mod...

pedram on:
Dec/21
frida.github.io: scriptable...

capadleman on:
Jun/19
Using NtCreateThreadEx for ...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit