天天看點

python第二版課後答案第七章7.5_IDA7.5 啟動基礎配置

原标題:IDA7.5 啟動基礎配置

python第二版課後答案第七章7.5_IDA7.5 啟動基礎配置

本文為看雪論優秀文章

看雪論壇作者ID:HHHso

前 言

文本以解決IDA7.5的啟動為問題導向。相應IDA7.5版本請購買官方正版或管道測試版。

IDA7.5的安裝路徑不建議有非英文字元;空格一般不影響IDA的運作,但若IDASDK的放置路徑有空格,可能會在開發native插件時帶來額外的配置麻煩,這時一般在編譯配置路裡給帶空格的路徑加上雙引号【“”】可解決。

IDA7.0、IDA7.2、IDA7.5的測試樣例都是64位的,是以python和涉及的第三方都需要是64位的安裝版。

一、官方說明

IDA7.5目錄下README_python3.txt檔案已經說得比較清楚。

目的是讓IDA找到[lib]python.[dll|so|dylib],大意是:

1、IDA7.5預設使用Python3.x,除非下述目錄有use_python2檔案存在,這時使用Python2.7。

* IDA's install path: path/to/ida_install/python/use_python2

* The 'IDAUSR' directory:

+ ~/.idapro/python/use_python2 (on Linux/OSX)

+ %APPDATA%Hex-RaysIDA Propythonuse_python2 (on Windows)

+ [...or any other directory if the environment variable $IDAUSR is set]

2、Python2隻支援一個版本,即2.7版;Python3.x則支援多個x版本,這時候需要運作IDA7.5目錄下官配的idapyswitch.exe進行選擇。

二、啟動配置

如果修改系統全局環境變量,可能會影響其他版本的IDA或影響其他軟體的配置,為了使得各個版本的IDA和其他軟體都相安無事,一直以來都通過批檔案bat簡單配置需要的環境然後間接啟動IDA。

1、IDA7.0 32-bit-addr和Anaconda2的啟動配置7032.bat檔案内容如下:

(1.1)檔案位于IDA7.0目錄下,其快捷方式位置随意,如桌面。

(1.2)因為我給Anaconda2安裝的一些子產品使用了graphviz,是以path多了自己編譯的graphviz路徑。

(1.3)若是其他的python2,把其中的【D:ProgramDataAnaconda2】替換即可。

@ setpath=D:ProgramDatagraphviz_my bin;%path%

@ setpath=D:ProgramDataAnaconda2;D:ProgramDataAnaconda2s;D:ProgramDataAnaconda2Librarybin;D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:Program FilesIDA 7.0python;%path%

@ setPYTHONPATH=D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:ProgramDataAnaconda2Liblib-tk;

@ startida.exe

2、IDA7.0 64-bit-addr和Anaconda2的啟動配置7064.bat檔案内容如下,同理,隻是把ida.exe改為ida64.exe。

@ setpath=D:ProgramDatagraphviz_my bin;%path%

@ setpath=D:ProgramDataAnaconda2;D:ProgramDataAnaconda2s;D:ProgramDataAnaconda2Librarybin;D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:Program FilesIDA 7.0python;%path%

@ setPYTHONPATH=D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:ProgramDataAnaconda2Liblib-tk;

@ startida64.exe

IDA7.2的啟動配置與IDA7.0的啟動配置基本相同,python相關的路徑設定不變。

【D:Program FilesIDA 7.0python】改為【D:Program FilesIDA 7.2python】

3、IDA7.2 32-bit-addr和Anaconda2的啟動配置7232.bat檔案内容如下:

(1.1)檔案位于IDA7.2目錄下,其快捷方式位置随意,如桌面。

(1.2)因為我給Anaconda2安裝的一些子產品使用了graphviz,是以path多了自己編譯的graphviz路徑。

(1.3)若是其他的python2,把其中的【D:ProgramDataAnaconda2】替換即可。

@ setpath=D:ProgramDatagraphviz_my bin;%path%

@ setpath=D:ProgramDataAnaconda2;D:ProgramDataAnaconda2s;D:ProgramDataAnaconda2Librarybin;D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:Program FilesIDA 7.2python;%path%

@ setPYTHONPATH=D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:ProgramDataAnaconda2Liblib-tk;

@ startida.exe

4、IDA7.2 64-bit-addr和Anaconda2的啟動配置7264.bat檔案内容如下,同理,隻是把ida.exe改為ida64.exe。

@ setpath=D:ProgramDatagraphviz_my bin;%path%

@ setpath=D:ProgramDataAnaconda2;D:ProgramDataAnaconda2s;D:ProgramDataAnaconda2Librarybin;D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:Program FilesIDA 7.2python;%path%

@ setPYTHONPATH=D:ProgramDataAnaconda2Lib;D:ProgramDataAnaconda2DLLs;D:ProgramDataAnaconda2Liblib-tk;

@ startida64.exe

對于python2,IDA7.5的啟動配置與IDA7.0的啟動配置基本相同,python相關的路徑設定不變。

A、【 D:Program FilesIDA 7.0python】改為【D:Program FilesIDA 7.5python2】,注意後面的子目錄“2”。

B、我們增加了use_python2檔案生成指令 【echo . > "D:Program FilesIDA 7.5pythonuse_python2"】。

user_python2檔案可以生成在上面【一】官方說明提到的任意一個路徑,這裡放在IDA7.5目錄下的python目錄中。

請根據IDA7.5的目錄按實際情況修改生成指令。

5、IDA7.5 32-bit-addr和Anaconda2的啟動配置7532_27.bat檔案内容如下:

(1.1)檔案位于IDA7.5目錄下,其快捷方式位置随意,如桌面。

(1.2)因為我給Anaconda2安裝的一些子產品使用了graphviz,是以path多了自己編譯的graphviz路徑。

(1.3)若是其他的python2,把其中的【D:ProgramDataAnaconda2】替換即可。

@ setpath=D:ProgramDatagraphviz_mybin;% path%

@ setpath=D:ProgramDataAnaconda2; D: ProgramDataAnaconda2s; D: ProgramDataAnaconda2Librarybin; D: ProgramDataAnaconda2Lib; D: ProgramDataAnaconda2DLLs; D: ProgramFilesIDA7 .5python2;% path%

@ setPYTHONPATH=D:ProgramDataAnaconda2Lib; D: ProgramDataAnaconda2DLLs; D: ProgramDataAnaconda2Liblib-tk;

@ echo. > "D:Program FilesIDA 7.5pythonuse_python2"

@start ida.exe

6、IDA7.5 64-bit-addr和Anaconda2的啟動配置7564_27.bat檔案内容如下,同理,隻是把ida.exe改為ida64.exe。

@ setpath=D:ProgramDatagraphviz_mybin;% path%

@ setpath=D:ProgramDataAnaconda2; D: ProgramDataAnaconda2s; D: ProgramDataAnaconda2Librarybin; D: ProgramDataAnaconda2Lib; D: ProgramDataAnaconda2DLLs; D: ProgramFilesIDA7 .5python2;% path%

@ setPYTHONPATH=D:ProgramDataAnaconda2Lib; D: ProgramDataAnaconda2DLLs; D: ProgramDataAnaconda2Liblib-tk;

@ echo. > "D:Program FilesIDA 7.5pythonuse_python2"

@start ida64.exe

對于python3,IDA7.5的啟動配置與IDA7.0的啟動配置基本相同,python相關的路徑設定根據實際安裝路徑配置。

A、 【D:Program FilesIDA 7.0python】改為【D:Program FilesIDA 7.5python3】,注意後面的子目錄“3”。

B、我們增加了use_python2檔案删除指令 【@del "D:Program FilesIDA 7.5pythonuse_python2"】。

請根據IDA7.5的目錄按實際情況修改删除指令。

C、由于是python3,這裡需要多一步前面【一】官方說明的使用官方自帶的idapyswitch.exe選擇系統裡已經存在的心中囑意的python3.x版本。

例如下述cmd中在IDA7.5目錄下運作idapyswitch.exe,列出了系統有的幾個版本,有py39,py38,微軟IDE某年月裝的py36等,這裡選擇1。

其實際是patch了【D:Program FilesIDA 7.5python3PyQt5sip.pyd】來選中我們囑意的版本。

python3配置必執行配置指令,除非版本與官方sip.pyd選中的版本相同,目測官方選的是py38。

(base) D:Program FilesIDA 7.5>idapyswitch.exe

Checking installs from "Python Software Foundation"

Checking "Python 3.6 (64-bit)"( 3.6)

Found: "C:Program Files (x86)Microsoft Visual StudioSharedPython36_64"(version: 3.6. 6( '3.6.6150.1013'))

Checking installs from "Continuum Analytics, Inc."

Checking "Anaconda 5.2.0"( 3.6)

Found: "D:ProgramDataAnaconda3"(version: 3.6. 5( '3.6.5150.1013'))

Checking "Anaconda 2020.07"( 3.8)

Found: "C:py38_x86_64anaconda3"(version: 3.8. 3( '3.8.3150.1013'))

Checking installs from "Python Software Foundation"

Checking "Python 3.6 (64-bit)"( 3.6)

Found: "D:ProgramDataPython36_amd64"(version: 3.6. 7( '3.6.7150.1013'))

Checking "Python 3.9 (64-bit)"( 3.9)

Found: "C:Python39-64"(version: 3.9. 0( '3.9.101.1013'))

The following Python installations were found:

#0: 3.9.0 ('3.9.101.1013') (C:Python39-64python3.dll)

#1: 3.8.3 ('3.8.3150.1013') (C:py38_x86_64anaconda3python3.dll)

#2: 3.6.7 ('3.6.7150.1013') (D:ProgramDataPython36_amd64python3.dll)

#3: 3.6.6 ('3.6.6150.1013') (C:Program Files (x86)Microsoft Visual StudioSharedPython36_64python3.dll)

#4: 3.6.5 ('3.6.5150.1013') (D:ProgramDataAnaconda3python3.dll)

Please pick a number between 0and 4(default: 0)

1

Applying version 3.8. 3( '3.8.3150.1013')

然後還是正常配置我們的啟動配置。

7、IDA7.5 32-bit-addr和Anaconda3的啟動配置7532_38.bat檔案内容如下:

(1.1)檔案位于IDA7.5目錄下,其快捷方式位置随意,如桌面。

(1.2)因為我給Anaconda2安裝的一些子產品使用了graphviz,是以path多了自己編譯的graphviz路徑。

(1.3)若是其他的python2,把其中的 【C:py38_x86_64anaconda3】替換即可。

@ del"D:Program FilesIDA 7.5pythonuse_python2"

@set path=C:py38_x86_64anaconda3; C: py38_x86_64anaconda3s; C: py38_x86_64anaconda3Librarybin; C: py38_x86_64anaconda3Lib; C: py38_x86_64anaconda3DLLs; D: ProgramFilesIDA7 .5python3;% path%

@ setPYTHONPATH=C:py38_x86_64anaconda3Lib; C: py38_x86_64anaconda3DLLs; C: py38_x86_64anaconda3Liblib-tk;

@ startida.exe

8、IDA7.5 64-bit-addr和Anaconda3的啟動配置7564_38.bat檔案内容如下,同理,隻是把ida.exe改為ida64.exe。

@ del"D:Program FilesIDA 7.5pythonuse_python2"

@set path=C:py38_x86_64anaconda3; C: py38_x86_64anaconda3s; C: py38_x86_64anaconda3Librarybin; C: py38_x86_64anaconda3Lib; C: py38_x86_64anaconda3DLLs; D: ProgramFilesIDA7 .5python3;% path%

@ setPYTHONPATH=C:py38_x86_64anaconda3Lib; C: py38_x86_64anaconda3DLLs; C: py38_x86_64anaconda3Liblib-tk;

@ startida64.exe

最後,如果IDA7.0、IDA7.2、IDA7.5都齊全,大概桌面有這八個輕按兩下啟動檔案的快捷方式:

python第二版課後答案第七章7.5_IDA7.5 啟動基礎配置
python第二版課後答案第七章7.5_IDA7.5 啟動基礎配置

三、第三方子產品的配置

一般unicorn、capstone、keystone等都是屬于python的配置,與IDA無關。

qiling架構如果不使用IDA相關的操作,也與IDA無關,可以根據python3獨立安裝配置。

1.ipyida

官方安裝說明也簡單,一鍵安裝,就是在啟動IDA7.5後,在IDAPython裡執行一鍵安裝指令:

python2

import urllib.request; exec(urllib.request.urlopen( 'https://github.com/eset/ipyida/raw/stable/install_from_ida.py'). read)

python3

import urllib.request; exec(urllib.request.urlopen( 'https://github.com/eset/ipyida/raw/stable/install_from_ida.py'). read)

一鍵指令的核心操作實際就是【pip install ipyida】和【複制 ipyida_plugin_stub.py檔案到IDA7.5的plugins目錄中,其在plugins目錄中重命名為ipyida.py】。

windows的安裝可能會遇到的一些問題,沒有遇到,則忽略。

NotImplementedError(這應該屬于jupyter的bug)。

File "C:py38_x86_64anaconda3Libasyncioevents.py", line 501, inadd_reader

raiseNotImplementedError

NotImplementedError

app.shell.set_completer_frame

AttributeError: 'NoneType'object has no attribute 'set_completer_frame'

解決辦法:

在tornadoplatformasyncio.py檔案中,在 importasyncio之後添加下述修複代碼,如(C:py38_x86_64anaconda3Libsite-packagestornadoplatformasyncio.py)

importsys

ifsys.platform == 'win32':

asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy)

如何定位asyncio位置?

簡單運作python,然後即可查閱

importasyncio

print(asyncio.__file__)

python第二版課後答案第七章7.5_IDA7.5 啟動基礎配置

【 IDA 7.5/plugins/ipyida_plugin_stub.py】或【IDA 7.5/plugins/ipyida.py】加載失敗問題:encoding declaration in Unicode string,如:

一般是使用IDA7.5的python2時觸發此問題,python2和python3時獨立通過pip install ipyida的,但需要共享pluginsipyida.py。

D:Program FilesIDA 7.5pluginsipyida_plugin_stub.py: encoding declaration in Unicode string (D:/Program Files/IDA 7.5/plugins/ipyida_plugin_stub.py, line 0)

Traceback (most recent calllast):

File"D:Program FilesIDA 7.5python2ida_idaapi.py", line 643, inIDAPython_Exec

code = compile(raw.decode( encoding), , 'exec')

File"D:/Program Files/IDA 7.5/plugins/ipyida_plugin_stub.py", line 0

SyntaxError: encodingdeclaration inUnicodestring

要實作python2和python3共享pluginsipyida.py,則對pluginsipyida.py删除首行的encoding聲明,并去掉Author作者的特殊字元即可。

通過 pip安裝的 ipyida,可通過

importipyida

print( ipyida.__file__)

查詢對應 python安裝的 ipyida目錄下的 ipyida_plugin_stub.py,複制一份到 pluginsipyida.py即可,然後做下圖修改

python第二版課後答案第七章7.5_IDA7.5 啟動基礎配置

ipyida的from PyQt5 import QtCore, QtSvg, QtWidgets, QtGui, QtPrintSupport問題,此問題一般是早期版本的python2觸發。

因為ipyida比較新,要求qtconsole>=4.6,而最新的5.0又對python2不友好(沒有提供相應版本)是以高不成,低不就的錯誤。

一般通過pip uninstall qtconsole,重新裝各python2友好的最高版,官方最後支援python2的是4.7.7。

通過curl或直接下載下傳qtconsole -4.7.7-py2.py3-none- any.whl

curl https: //files.pythonhosted.org/packages/c1/35/0479d9707e3c459901a64dd49843b2f06a65a647dc2bcee7b8bfe3560da1/qtconsole-4.7.7-py2.py3-none-any.whl -oqtconsole-4.7.7-py2.py3-none-any.whl

然後安裝

pip install qtconsole -4.7.7-py2.py3-none- any.whl

最後測試

fromPyQt5 importQtCore, QtSvg, QtWidgets, QtGui, QtPrintSupport

題外,一般不要嘗試将ipyida裝到7.0或7.2版本,本身ipyida是針對7.4以上的,7.4以下可考慮ida_ipython。

2. sark

python3 安裝:

gitclone https://github.com/tmr232/Sark.git

cdSark

pythonsetup.py install

sark最新支援IDA7.4以上,但不要嘗試在IDA7.5的python2中使用sark,api不相容。

一般python2使用sark,就在IDA7.4以下版本的IDA,而python3使用sark,就在IDA7.4以上。

最後,IDA7.5的python2的配置雖然有提供參考,應該作為備用緩解使用。

建議在IDA7.4以上版本積極擁抱python3,而在IDA7.4以下版本懷舊python2。

看雪ID:HHHso傳回搜狐,檢視更多

責任編輯: