python第二版课后答案第七章7.5_IDA7.5 启动基础配置

本文介绍了如何配置IDA7.5的启动,特别是与Python环境的整合,包括如何选择Python2或Python3版本,以及如何处理路径中有空格的情况。通过创建启动批处理文件,确保不同版本的IDA与其他软件的环境变量互不干扰。同时,文中还提及了第三方模块如ipyida和sark的安装与配置注意事项。
摘要由CSDN通过智能技术生成

原标题:IDA7.5 启动基础配置

1395a22eae30f95c45fc719e24b823e4.png

本文为看雪论优秀文章

看雪论坛作者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都齐全,大概桌面有这八个双击启动文件的快捷方式:

9cf8613cd1649f6ec4140238191874b4.png

ffbd97b14d3136dbd41c31a07d2ddbbc.png

三、第三方模块的配置

一般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__)

fea91bbbe586a57398743886cc76aa4f.png

【 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即可,然后做下图修改

9d728381ed778608779290bdd462df35.png

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返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值