Cutter: asm.pseudo and asm.cmt.right break graph display

Created on 23 Jan 2019  Â·  7Comments  Â·  Source: rizinorg/cutter

Environment information

  • Operating System: Parrot Security OS 4.5 (amd 64)
  • Cutter version: 1.7.4 (released)
  • File format: PE32 - x86
    Describe the bug
    Graph panel shows No function detected. Cannot display when asm.pseudo is enabled and asm.cmt.right is disabled.

To Reproduce
Steps to reproduce the behavior:

  1. Unzip the file (URL bellow, password: infected, unpack it using UPX)
  2. Open Cutter normally, open main function
  3. Enable asm.pseudo, disable asm.cmt.right
    screenshot from 2019-01-23 17-30-10
  4. See error
    screenshot from 2019-01-23 17-32-41

Expected behavior
Cutter should detect and display functions normally

Additional context

  1. Enable asm.cmt.right does not have this error
    screenshot from 2019-01-23 17-33-31
  2. Both asm.cmt.right = True / False does not have this error if asm.pseudo = False
    screenshot from 2019-01-23 17-34-37
    screenshot from 2019-01-23 17-34-41
  3. Tested with other random file, cutter has error with this binary file only
    Binary file (password: infected, UPX packed)
    https://github.com/PacktPublishing/Mastering-Reverse-Engineering/blob/master/ch12/whatami.zip
BUG rizin

Most helpful comment

problem is in radare2-side...

All 7 comments

P/s: I've saw this message in terminal:

Failed to parse JSON for command "agJ 0x00401000": unterminated object
[{"name":"main","offset":4198400,"ninstr":53,"nargs":0,"nlocals":14,"size":189,"stack":124,"type":"sym","blocks":[{"offset":4198400,"size":160,"jump":4198579,"fail":4198560,"trace":{"count":341,"times":1},"colorize":0,"ops":[{"offset":4198400,"text":"<font color='#82607e'></font><font color='#f3c5ff'></font><font color='#f3c5ff'>;&nbsp;[00]&nbsp;-r-x&nbsp;section&nbsp;size&nbsp;4096&nbsp;named&nbsp;.text</font>"},{"offset":4198400,"text":"<font color='#00b1ab'>;--&nbsp;section..text:</font>"},{"offset":4198400,"text":"<font color='#00ffff'>(fcn)&nbsp;main</font>&nbsp;189"},{"offset":4198400,"text":"<font color='#20b0c0'></font>&nbsp;&nbsp;int&nbsp;<font color='#00ffff'>main</font>&nbsp;(int&nbsp;argc,&nbsp;char&nbsp;**argv,&nbsp;char&nbsp;**envp);"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_8h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x8</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_ch&nbsp;</font><font color='#ababab'>@&nbsp;esp+0xc</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_10h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x10</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_14h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x14</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_18h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x18</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_1ch&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x1c</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_20h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x20</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_24h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x24</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_28h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x28</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_2ch&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x2c</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_30h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x30</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_34h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x34</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_38h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x38</font>"},{"offset":4198400,"text":"<font color='#9090a0'>;&nbsp;</font><font color='#9090a0'>var&nbsp;</font><font color='#df077e'>int&nbsp;local_48h&nbsp;</font><font color='#ababab'>@&nbsp;esp+0x48</font>"},{"offset":4198400,"text":";&nbsp;'0'"},{"offset":4198400,"text":"<font color='#ffffff'>esp&nbsp;</font>-<font color='#009d9d'>=</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x30</font>"},{"offset":4198403,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198404,"text":";&nbsp;[0x38:4]=-1"},{"offset":4198404,"text":";&nbsp;'8'"},{"offset":4198404,"text":";&nbsp;56"},{"offset":4198404,"text":"<font color='#ffffff'>esi&nbsp;=&nbsp;dword</font><font color='#009d9d'>&nbsp;</font>[<font color='#009d9d'>local_38h</font>]<font color='#009d9d'></font>"},{"offset":4198408,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198409,"text":";&nbsp;'d'"},{"offset":4198409,"text":";&nbsp;100"},{"offset":4198409,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x64</font>"},{"offset":4198411,"text":";&nbsp;'x3@'"},{"offset":4198411,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x403378</font>"},{"offset":4198416,"text":";&nbsp;'m'"},{"offset":4198416,"text":";&nbsp;109"},{"offset":4198416,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x6d</font>"},{"offset":4198418,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198419,"text":";&nbsp;0x402104"},{"offset":4198419,"text":";&nbsp;\"r'\""},{"offset":4198419,"text":"<font color='#ffd200'>dword&nbsp;</font>[<font color='#009d9d'></font><font color='#d25032'>sym.imp.USER32.dll_LoadStringW</font>]<font color='#009d9d'></font><font color='#009d9d'>&nbsp;</font>(<font color='#009d9d'></font>)<font color='#009d9d'></font>"},{"offset":4198425,"text":"<font color='#ff5afd'>edi&nbsp;=</font><font color='#009d9d'>&nbsp;0</font>"},{"offset":4198427,"text":";&nbsp;8"},{"offset":4198427,"text":"<font color='#ffffff'>eax&nbsp;=</font><font color='#009d9d'>&nbsp;</font>[<font color='#009d9d'>local_8h</font>]<font color='#009d9d'></font>"},{"offset":4198431,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;eax</font>"},{"offset":4198432,"text":";&nbsp;'0'"},{"offset":4198432,"text":";&nbsp;[0x30:4]=-1"},{"offset":4198432,"text":";&nbsp;48"},{"offset":4198432,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#df077e'>local_ch</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x30</font>"},{"offset":4198440,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_10h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;3</font>"},{"offset":4198448,"text":";&nbsp;[0x4010c0:4]=0x83ec8b55"},{"offset":4198448,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#df077e'>local_14h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x4010c0</font>"},{"offset":4198456,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_18h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198460,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_1ch</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198464,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_20h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198468,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_24h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198472,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_28h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198476,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_2ch</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;6</font>"},{"offset":4198484,"text":";&nbsp;'m'"},{"offset":4198484,"text":";&nbsp;[0x6d:4]=-1"},{"offset":4198484,"text":";&nbsp;109"},{"offset":4198484,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#df077e'>local_30h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x6d</font>"},{"offset":4198492,"text":";&nbsp;'x3@'"},{"offset":4198492,"text":";&nbsp;[0x403378:4]=0"},{"offset":4198492,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#df077e'>local_34h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x403378</font>"},{"offset":4198500,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'>local_38h</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198504,"text":";&nbsp;0x402100"},{"offset":4198504,"text":";&nbsp;\"`'\""},{"offset":4198504,"text":"<font color='#ffd200'>dword&nbsp;</font>[<font color='#009d9d'></font><font color='#d25032'>sym.imp.USER32.dll_RegisterClassExW</font>]<font color='#009d9d'></font><font color='#009d9d'>&nbsp;</font>(<font color='#009d9d'></font>)<font color='#009d9d'></font>"},{"offset":4198510,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198511,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198512,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198513,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198514,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198515,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x80000000</font>"},{"offset":4198520,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198521,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x80000000</font>"},{"offset":4198526,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0xcf0000</font>"},{"offset":4198531,"text":";&nbsp;'4!@'"},{"offset":4198531,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x402134</font>"},{"offset":4198536,"text":";&nbsp;'x3@'"},{"offset":4198536,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x403378</font>"},{"offset":4198541,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198542,"text":";&nbsp;[0x403374:4]=0"},{"offset":4198542,"text":"<font color='#ffffff'>dword&nbsp;</font>[<font color='#009d9d'></font><font color='#d25032'>0x403374</font>]<font color='#009d9d'>&nbsp;=</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198548,"text":";&nbsp;0x4020fc"},{"offset":4198548,"text":";&nbsp;\"N'\""},{"offset":4198548,"text":"<font color='#ffd200'>dword&nbsp;</font>[<font color='#009d9d'></font><font color='#d25032'>sym.imp.USER32.dll_CreateWindowExW</font>]<font color='#009d9d'></font><font color='#009d9d'>&nbsp;</font>(<font color='#009d9d'></font>)<font color='#009d9d'></font>"},{"offset":4198554,"text":"<font color='#ffffff'>esi&nbsp;=</font><font color='#009d9d'>&nbsp;eax</font>"},{"offset":4198556,"text":"<font color='#00ffff'>var&nbsp;=&nbsp;esi&nbsp;</font>-<font color='#009d9d'></font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198558,"text":",{"offset":4198558,"text":"<font color='#9dd600'>if&nbsp;</font>(<font color='#009d9d'>!var</font>)<font color='#009d9d'>&nbsp;goto</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x4010b3</font>"}]},{"offset":4198560,"size":19,"jump":4198579,"trace":{"count":379,"times":1},"colorize":0,"ops":[{"offset":4198560,"text":";&nbsp;[0x48:4]=-1"},{"offset":4198560,"text":";&nbsp;'H'"},{"offset":4198560,"text":";&nbsp;72"},{"offset":4198560,"text":"<font color='#ffffff'>ecx&nbsp;=&nbsp;dword</font><font color='#009d9d'>&nbsp;</font>[<font color='#009d9d'>local_48h</font>]<font color='#009d9d'></font>"},{"offset":4198564,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;ecx</font>"},{"offset":4198565,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198566,"text":";&nbsp;0x4020f8"},{"offset":4198566,"text":";&nbsp;\"B'\""},{"offset":4198566,"text":"<font color='#ffd200'>dword&nbsp;</font>[<font color='#009d9d'></font><font color='#d25032'>sym.imp.USER32.dll_ShowWindow</font>]<font color='#009d9d'></font><font color='#009d9d'>&nbsp;</font>(<font color='#009d9d'></font>)<font color='#009d9d'></font>"},{"offset":4198572,"text":"<font color='#df077e'>push</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198573,"text":";&nbsp;0x4020f4"},{"offset":4198573,"text":";&nbsp;\"4'\""},{"offset":4198573,"text":"<font color='#ffd200'>dword&nbsp;</font>[<font color='#009d9d'></font><font color='#d25032'>sym.imp.USER32.dll_UpdateWindow</font>]<font color='#009d9d'></font><font color='#009d9d'>&nbsp;</font>(<font color='#009d9d'></font>)<font color='#009d9d'></font>"}]},{"offset":4198579,"size":10,"trace":{"count":383,"times":1},"colorize":0,"ops":[{"offset":4198579,"text":"<font color='#ef8d1a'>pop</font><font color='#009d9d'>&nbsp;edi</font>"},{"offset":4198580,"text":"<font color='#ff5afd'>eax&nbsp;=</font><font color='#009d9d'>&nbsp;0</font>"},{"offset":4198582,"text":"<font color='#ef8d1a'>pop</font><font color='#009d9d'>&nbsp;esi</font>"},{"offset":4198583,"text":";&nbsp;'0'"},{"offset":4198583,"text":"<font color='#ffffff'>esp&nbsp;</font>+<font color='#009d9d'>=</font><font color='#009d9d'>&nbsp;</font><font color='#d25032'>0x30</font>"},{"offset":4198586,"text":"<font color='#ffaa7f'>return</font>"}]}]}]

problem is in radare2-side...

cc @radare , could you check, please?

@radare r2 fails to parse the json

I think @thestr4ng3r is better suited since he created agJ

Fixed in r2, but will probably not be included in the next Cutter release, only after the next r2 release.

Next r2 will happen in aprils fool

On 6 Mar 2019, at 21:12, Florian Märkl notifications@github.com wrote:

Fixed in r2, but will probably not be included in the next Cutter release, only after the next r2 release.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ITAYC0HEN picture ITAYC0HEN  Â·  4Comments

mirh picture mirh  Â·  3Comments

s0i37 picture s0i37  Â·  5Comments

Maijin picture Maijin  Â·  5Comments

AxelPotato picture AxelPotato  Â·  4Comments