📚 OpenRCE is preserved as a read-only archive. Launched at RECon Montreal in 2005. Registration and posting are disabled.








Flag: Tornado! Hurricane!

 Forums >>  Brainstorms - General  >>  Error in logic for generating CFG of functions in Paimei

Topic created on: August 17, 2010 09:45 CDT by tosanjay .

While working with Paimei, I observed that I was not able to generate control flow graph (CFG) of function properly (for a particular executable). The CFG was broken. This forced me to analyse source code of the Paimei. As a result, I found that logic to create CFG (of basic blocks as nodes) is erroneous (in function.py module) of pida. Anybody has observed it before? For example, if the assembly has code of following type:
--
stmt1: ......
stmt2: ......
........
stmt4: jnz stmt9 <----
.......
stmt6: jnz stmt10 <----
....
stmt8: mov eax, ebx
stmt9: jmp stmt2   <----------imp
stmt10: mov eac, [ebp+8]
......
stmt18: jnz stmt9 <----
.......
stmt6: jnz stmt10 <----
....
........
In the above code, Paimei will create a basic block with stmt9 as node (which is correct), but also creates an edge to node stmt10, which is wrong. Also, Paimei will not create an edge from BB stmt9 to stmt2 (which, otherwise should be the case).
I have modified the algorithm (given in function.py) to create nodes and edges of CFG and it seems to be working fine. I am curious if others have observed anything like this.
thanks

  jduck     August 17, 2010 15:19.02 CDT
Are you planning to contribute your changes back to the community?

  tosanjay     August 19, 2010 07:05.14 CDT
Yes, why not. that is why I posted here and asked others if they had faced this issue. I have sent a mail to Pedram to get his opinion, but so far no reply from him. If he responds, I can be sure about this problem/solution and things can go ahead.

Note: Registration is required to post to the forums.

There are 31,328 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
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
Question about memor...
Dec/12


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