Exetools

Exetools (https://forum.exetools.com/index.php)
-   Developer Section (https://forum.exetools.com/forumdisplay.php?f=48)
-   -   Ida Pro Python editor v1 (https://forum.exetools.com/showthread.php?t=16918)

Storm Shadow 07-05-2015 05:40

Ida Pro Python editor v1
 
I made this Ida pro Python editor :D


I always hated the stock one.
i am gonna do one for x64dbg also, when gets python support.

check it out here.
https://github.com/techbliss/Python_editor

Git 07-05-2015 18:44

I am feeling particularly stupid today and am puzzled about installing Sip. Can you explain using small words please?

Git

Storm Shadow 07-05-2015 18:48

yes no problem.

PyQt needs sip to run.
ida need a special build of both PyQt4 and sip to run, the stock one wont work.
So everything have to be rebuilded.

the sip package is ready configured for ida, so do not reconfigure.


just extract sip archive and use vs command line from extracted folder and do.

Code:

nmake install
.

Storm Shadow 07-20-2015 03:04

You should check out the latest build.
I made this totally different.A more clean look
No push buttons but icon and hotkey based.



HTML Code:

1. Hotkeys:
2.  NewFile:            Ctrl+N
3.  OpenFile:          Ctrl+O
4.  SaveFile:          Ctrl+S
5.  RunScript:          Ctrl+E
6.  Undo:              Ctrl+Z
7.  Redo:              Ctrl+Y
8.  SelectALL:          Ctrl+A
9.  Paste:              Ctrl+V
10. ResetFolding:      Ctrl+R
11. CircleFolding:      Ctrl+C
12. PlainFolding:      Ctrl+P
13. Hex-ray Home:      Ctrl+W
14. Python API:        Ctrl+I
15. Open git python:    Ctrl+G
16. Author:            Ctrl+B

Tip!
Use hit hotkey Alt+E twize to load the editor.

picture here
http://i.imgur.com/TcsyTZW.png


https://github.com/techbliss/Python_editor

Storm Shadow 09-06-2015 17:58

Changelog v2
Fix globals
you can run files that depends on submodules.
So it can handle full scale python apps now, insteed of beeing a script runner ;)

quygia128 09-18-2015 20:09

Greatz, Storm
Want to say thanks to you!
I'm very busy and so missing it on your site :(

quygia128

Storm Shadow 12-05-2015 02:32

version 0.3 out

PHP Code:

APi working
better path recognition
api on
/off toggle
run full python programs



Hotkeys
Code:

#############
# Author Storm Shadow #
# Hotkeys #
# NewFile: Ctrl+N #
# OpenFile: Ctrl+O #
# SaveFile: Ctrl+S #
# RunScript: Ctrl+E #
# Undo: Ctrl+Z #
# Redo: Ctrl+Y #
# SelectALL: Ctrl+A #
# Paste: Ctrl+V #
# ResetFolding: Ctrl+R #
# CircleFolding: Ctrl+C #
# PlainFolding: Ctrl+P #
# HEX-ray Home: Ctrl+W #
# Ida Pro Python SDK Ctrl+I #
# IDAPROPythonGit: Ctrl+G #
# Author: Ctrl+B #
# Enable Reg: Alt+E #
# Disable Reg: Alt+D #
##################
# IDA PRO python Editor #
##################


ricnar456 12-06-2015 21:47

cannot install
 
Quote:

build yourself

https://github.com/techbliss/Ida_Pro_Ultimate_Qt_Build_Guide
or copy supplied Qsci.pyd in

C:\Python27\Lib\site-packages\PyQt4
I am very stupid too but i create the folder

C:\Python27\Lib\site-packages\PyQt4

i have ida 6.8 installed and do not have this folder at all

copy supplied Qsci.pyd in

C:\Python27\Lib\site-packages\PyQt4

i copy the file to the new folder

and extract zip

i have now in

C:\Program Files (x86)\IDA 6.8\plugins\Code editor

the files
pyeditor.py
__init__.py
.icons
idc.api
python.api
idaapi.api

in

C:\Program Files (x86)\IDA 6.8\plugins\

i have

Python_editor.py

is right

i have errors when start ida

No module named pyqt4

and do not start the plugin

Is necessary any step more?

thanks

ricnar

Storm Shadow 12-06-2015 23:05

Yes you have to install spesielt Build of PyQt.
Normal build wont work.

have Builded the latest Qt PyQt-win-gpl-4.11.4 framwork from scratch.
Then made a installer that install it correct and add the right path so ida will find it.
PAckage include full PyQt4 version PyQt-win-gpl-4.11.4
And sip sip-4.16.9 that PyQt4 depends on.


Works with any path now

Since many have trouble setting up python correct.
It add following regestry changes to path so ida pro will find PyQt.
Only added if its not there.

https://mega.nz/#!PkN0hSYR!DuYRLKTpcqI5UO0iYw9cvwOQajsQs6XB3_Up9OwdBac

original thread http://www.techbliss.org/threads/pyqt-win-gpl-4-11-qt-4-4-8-7-for-ida-pro-total-package-installer-by-storm-shadow.768/


yes thats correct
Quote:

i have now in

C:\Program Files (x86)\IDA 6.8\plugins\Code editor

the files
pyeditor.py
__init__.py
.icons
idc.api
python.api
idaapi.api

in

C:\Program Files (x86)\IDA 6.8\plugins\

i have

Python_editor.py

is right

ricnar456 12-08-2015 18:47

I could successfully install the editor and started perfectly now I realize that I have of some problems using it.
Before starting the editor I can use hex () in python command bar

Python> hex (2)
0x2

but when I start the editor with alt +E and typing in the editor and run

hex (2)


Traceback (most recent call last):
File "C: \ Program Files (x86) \ IDA 6.8 \ plugins \ Code editor \ pyeditor.py", line 322, in Runto
exec (script, g)
File "<string>", line 1, in <module>
TypeError: hex (QTextStream): 1 have unexpected argument type 'int'
Python> hex / 2)
File "<string>", line 1
hex / 2)
^
SyntaxError: invalid syntax
Python> hex (2)
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: hex (QTextStream): 1 have unexpected argument type 'int'

and then either neither the publisher nor in the command bar can be used without pulling the same mistake.

thanks
ricnar

Storm Shadow 12-08-2015 19:04

thats a very wierd error.
Ida original editor cant even run this command.(exept the command line box)they properly supressed the error from even running.

Error thinks the the int is a string.
thx for reporting it.

Storm Shadow 12-08-2015 19:31

okay on the original editor, you have to type
print hex (2)

i fixed error in my editor, and will upload it later to repo.

fix

Code:

        except ImportError:
            os.chdir(str(self.path))
            os.path.join(os.path.expanduser('~'), os.path.expandvars(str(self.path)))
            sys.path.insert(0, str(self.path))
            exec (script, g)
            QtGui.QCloseEvent()

            if TypeError (QTextStream):
                g = globals()
                os.chdir(str(self.path))
                os.path.join(os.path.expanduser('~'), os.path.expandvars(str(self.path)))
                sys.path.insert(0, str(self.path))
                exec int(script)
                QtGui.QCloseEvent()


Did code recognition work also after you used the installer ?

ricnar456 12-08-2015 23:56

Did code recognition work also after you used the installer ?
-----
I barely try.
I can see when you type idaapi and point a menu appear with the attributes.
This is the only feature I can see.
I speak Spanish and barely can write and understand english sorry.

Ricnar

Storm Shadow 12-09-2015 01:48

Quote:

Originally Posted by ricnar456 (Post 103203)
Did code recognition work also after you used the installer ?
-----
I barely try.
I can see when you type idaapi and point a menu appear with the attributes.
This is the only feature I can see.
I speak Spanish and barely can write and understand english sorry.

Ricnar

yes then its working, the is code reconition for both ida pro python api , and all the satnadard finctions for python it self.
python about 12 000 funtions
https://github.com/techbliss/Python_editor/blob/master/plugins/Code%20editor/python.api :)
and idaapi 10 000. funtions


Also there is on off toggle for this.

ricnar456 12-09-2015 08:28

For fix the bug is necessary reinstall your compiled qt with a New version or only updating the editor is enough.

Storm Shadow 12-09-2015 13:33

repo updated with fix

ricnar456 12-10-2015 05:47

the fix works perfect
 
Thanks I tried and the bug was fixed, thanks.

best regards
ricnar

Storm Shadow 12-14-2015 02:50

New build

Added
Code:

# Zoom in Ctrl+Shift+ + #
# Zoom Out Ctrl+Shift+ - #
# Profile Code Ctrl+Shift+ E #

profiling example of app itself, so see if any code takes to long or runs in a loop

Code:

  173 function calls in 0.025 seconds
 
  Ordered by: standard name
 
  ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1  0.000  0.000  0.000  0.000 <string>:282(retranslateUi)
        1  0.008  0.008  0.025  0.025 <string>:4(<module>)
        2  0.000  0.000  0.000  0.000 <string>:71(_translate)
        1  0.000  0.000  0.000  0.000 <string>:77(Ui_MainWindow)
        1  0.001  0.001  0.008  0.008 <string>:78(setupUi)
        1  0.000  0.000  0.000  0.000 idaapi.py:27414(idadir)
        4  0.000  0.000  0.003  0.001 init.py:30(write)
        1  0.000  0.000  0.000  0.000 {_idaapi.idadir}
        4  0.003  0.001  0.003  0.001 {_idaapi.msg}
        2  0.000  0.000  0.000  0.000 {built-in method SendScintilla}
      18  0.000  0.000  0.000  0.000 {built-in method addAction}
        1  0.000  0.000  0.000  0.000 {built-in method addPixmap}
      18  0.000  0.000  0.000  0.000 {built-in method addSeparator}
        1  0.000  0.000  0.000  0.000 {built-in method addToolBar}
        1  0.000  0.000  0.000  0.000 {built-in method addWidget}
        1  0.000  0.000  0.000  0.000 {built-in method exec_}
        3  0.005  0.002  0.005  0.002 {built-in method load}
        1  0.000  0.000  0.000  0.000 {built-in method prepare}
        2  0.002  0.001  0.002  0.001 {built-in method resize}
        1  0.000  0.000  0.000  0.000 {built-in method setAutoCompletionSource}
        3  0.000  0.000  0.000  0.000 {built-in method setAutoCompletionThreshold}
        2  0.000  0.000  0.000  0.000 {built-in method setAutoFillBackground}
        1  0.000  0.000  0.000  0.000 {built-in method setAutoIndent}
        1  0.000  0.000  0.000  0.000 {built-in method setBraceMatching}
        1  0.000  0.000  0.000  0.000 {built-in method setCentralWidget}
        1  0.000  0.000  0.000  0.000 {built-in method setDefaultFont}
        1  0.000  0.000  0.000  0.000 {built-in method setEolFill}
        1  0.000  0.000  0.000  0.000 {built-in method setFamily}
        1  0.000  0.000  0.000  0.000 {built-in method setFixedPitch}
        1  0.000  0.000  0.000  0.000 {built-in method setFont}
        1  0.000  0.000  0.000  0.000 {built-in method setFrameShape}
        1  0.000  0.000  0.000  0.000 {built-in method setIconSize}
        1  0.000  0.000  0.000  0.000 {built-in method setLexer}
        1  0.000  0.000  0.000  0.000 {built-in method setMarginWidth}
        1  0.000  0.000  0.000  0.000 {built-in method setMarginsFont}
        1  0.000  0.000  0.000  0.000 {built-in method setMargin}
        5  0.000  0.000  0.000  0.000 {built-in method setObjectName}
        1  0.000  0.000  0.000  0.000 {built-in method setPointSize}
      18  0.000  0.000  0.000  0.000 {built-in method setShortcut}
        1  0.000  0.000  0.000  0.000 {built-in method setSpacing}
      18  0.000  0.000  0.000  0.000 {built-in method setStatusTip}
        1  0.000  0.000  0.000  0.000 {built-in method setStyleSheet}
        1  0.000  0.000  0.000  0.000 {built-in method setTabWidth}
        1  0.000  0.000  0.000  0.000 {built-in method setToolButtonStyle}
        1  0.000  0.000  0.000  0.000 {built-in method setToolTip}
        1  0.000  0.000  0.000  0.000 {built-in method setWhatsThis}
        1  0.000  0.000  0.000  0.000 {built-in method setWindowIcon}
        2  0.000  0.000  0.000  0.000 {built-in method setWindowTitle}
        1  0.005  0.005  0.005  0.005 {built-in method show}
        1  0.000  0.000  0.000  0.000 {built-in method width}
        1  0.000  0.000  0.000  0.000 {connectSlotsByName}
        9  0.000  0.000  0.000  0.000 {fromUtf8}
        1  0.000  0.000  0.000  0.000 {instance}
      18  0.000  0.000  0.000  0.000 {method 'connect' of 'PyQt4.QtCore.pyqtBoundSignal' objects}
        1  0.000  0.000  0.000  0.000 {method 'disable' of '_lsprof.Profiler' objects}
        2  0.000  0.000  0.000  0.000 {method 'insert' of 'list' objects}
        1  0.000  0.000  0.000  0.000 {nt.chdir}
        1  0.000  0.000  0.000  0.000 {nt.getcwd}
        2  0.000  0.000  0.000  0.000 {translate}


ricnar456 02-01-2016 18:31

i can open the editor but when i close i cannot reopen with alt + E.

Executing last-registered action: JumpFileOffset (Jump to file &offset...)
Python Editor Loaded to menu use Alt+E once morePython Editor Loaded to menu use Alt+E once morePython Editor Loaded to menu use Alt+E once morePython Editor Loaded to menu use Alt+E once moreCommand "JumpEnter" failed
Python Editor Loaded to menu use Alt+E once more

nothing happens when i press alt + e to reopen.

thanks
ricnar
PD:maybe closing with alt + d and reopen with alt + E can work

One suggestion for the editor may be more comfortable.
You can add a window to the right, with the result of the execution log? This is to avoid having to return to IDA to see the result of running and then go back to the editor to continue.
A SAVE option without opening a window will be a improvement too.
Thanks again

Storm Shadow 02-02-2016 00:38

Set the shortcut in shortcut menu (option >>>Shortcut) first time after its loaded, then next time ida is opened it will work.
Run to a second window as a option sound like a good idea, i can look into that.The window open when save is a error, it should only do that once, i put in on my to fix list.

ricnar456 02-02-2016 01:05

Thanks
 
Your effort is very appreciated by me, you are great!!!

thanks
ricnar

NeOXOeN 10-29-2016 05:29

Nice tool but still needs some fixes..

keep a good work,,

bye N

Storm Shadow 10-29-2016 22:37

updated version

Clean up code
Zoom -/+
Font box
Getting ready for debugger feature

https://github.com/techbliss/Python_editor

Storm Shadow 12-14-2016 01:36

update

HTML Code:

ida Pyqt5 version >6.8 added(6.95)
pre 6.9 is still there also.
better exception handling.

https://github.com/techbliss/Python_editor

Remember to install my pre build PyQt5 installer build for ida.
https://www.techbliss.org/threads/ida-pro-pyqt5-5-6-2-x32-complete-installer-package-by-storm-shadow.909/


pyqt4 version for pre 6.9 is here
https://mega.nz/#!PkN0hSYR!DuYRLKTpc...6XB3_Up9OwdBac

Storm Shadow 10-05-2017 03:08

Ida pro 7.0 + added.
https://github.com/techbliss/Python_editor
Remember to read the readme on new PyQt5 build(howto install New PyQt5 build x64 and ida files)


All times are GMT +8. The time now is 21:00.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Always Your Best Friend: Aaron, JMI, ahmadmansoor, ZeNiX