本文为看雪论优秀文章
看雪论坛作者ID:HHHso
前 言
IDA7.5的安装路径不建议有非英文字符;空格一般不影响IDA的运行,但若IDASDK的放置路径有空格,可能会在开发native插件时带来额外的配置麻烦,这时一般在编译配置路里给带空格的路径加上双引号【“”】可解决。
IDA7.0、IDA7.2、IDA7.5的测试样例都是64位的,所以python和涉及的第三方都需要是64位的安装版。
一、官方说明
目的是让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_python22、Python2只支持一个版本,即2.7版;Python3.x则支持多个x版本,这时候需要运行IDA7.5目录下官配的idapyswitch.exe进行选择。
二、启动配置
@set path=D:\ProgramData\graphviz_my\bin;%path%
@set path=D:\ProgramData\Anaconda2;D:\ProgramData\Anaconda2\Scripts;D:\ProgramData\Anaconda2\Library\bin;D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\Program Files\IDA 7.0\python;%path%
@set PYTHONPATH=D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\ProgramData\Anaconda2\Lib\lib-tk;
@start ida.exe
@set path=D:\ProgramData\graphviz_my\bin;%path%
@set path=D:\ProgramData\Anaconda2;D:\ProgramData\Anaconda2\Scripts;D:\ProgramData\Anaconda2\Library\bin;D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\Program Files\IDA 7.0\python;%path%
@set PYTHONPATH=D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\ProgramData\Anaconda2\Lib\lib-tk;
@start ida64.exe
@set path=D:\ProgramData\graphviz_my\bin;%path%
@set path=D:\ProgramData\Anaconda2;D:\ProgramData\Anaconda2\Scripts;D:\ProgramData\Anaconda2\Library\bin;D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\Program Files\IDA 7.2\python;%path%
@set PYTHONPATH=D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\ProgramData\Anaconda2\Lib\lib-tk;
@start ida.exe
@set path=D:\ProgramData\graphviz_my\bin;%path%
@set path=D:\ProgramData\Anaconda2;D:\ProgramData\Anaconda2\Scripts;D:\ProgramData\Anaconda2\Library\bin;D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\Program Files\IDA 7.2\python;%path%
@set PYTHONPATH=D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\ProgramData\Anaconda2\Lib\lib-tk;
@start ida64.exe
@set path=D:\ProgramData\graphviz_my\bin;%path%
@set path=D:\ProgramData\Anaconda2;D:\ProgramData\Anaconda2\Scripts;D:\ProgramData\Anaconda2\Library\bin;D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\Program Files\IDA 7.5\python\2;%path%
@set PYTHONPATH=D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\ProgramData\Anaconda2\Lib\lib-tk;
@echo . > "D:\Program Files\IDA 7.5\python\use_python2"
@start ida.exe
@set path=D:\ProgramData\graphviz_my\bin;%path%
@set path=D:\ProgramData\Anaconda2;D:\ProgramData\Anaconda2\Scripts;D:\ProgramData\Anaconda2\Library\bin;D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\Program Files\IDA 7.5\python\2;%path%
@set PYTHONPATH=D:\ProgramData\Anaconda2\Lib;D:\ProgramData\Anaconda2\DLLs;D:\ProgramData\Anaconda2\Lib\lib-tk;
@echo . > "D:\Program Files\IDA 7.5\python\use_python2"
@start ida64.exe
(base) D:\Program Files\IDA 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 Studio\Shared\Python36_64\" (version: 3.6.6 ('3.6.6150.1013'))
Checking installs from "Continuum Analytics, Inc."
Checking "Anaconda 5.2.0" (3.6)
Found: "D:\ProgramData\Anaconda3" (version: 3.6.5 ('3.6.5150.1013'))
Checking "Anaconda 2020.07" (3.8)
Found: "C:\py38_x86_64\anaconda3" (version: 3.8.3 ('3.8.3150.1013'))
Checking installs from "Python Software Foundation"
Checking "Python 3.6 (64-bit)" (3.6)
Found: "D:\ProgramData\Python36_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-64\python3.dll)
#1: 3.8.3 ('3.8.3150.1013') (C:\py38_x86_64\anaconda3\python3.dll)
#2: 3.6.7 ('3.6.7150.1013') (D:\ProgramData\Python36_amd64\python3.dll)
#3: 3.6.6 ('3.6.6150.1013') (C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\python3.dll)
#4: 3.6.5 ('3.6.5150.1013') (D:\ProgramData\Anaconda3\python3.dll)
Please pick a number between 0 and 4 (default: 0)
1
Applying version 3.8.3 ('3.8.3150.1013')
@del "D:\Program Files\IDA 7.5\python\use_python2"
@set path=C:\py38_x86_64\anaconda3;C:\py38_x86_64\anaconda3\Scripts;C:\py38_x86_64\anaconda3\Library\bin;C:\py38_x86_64\anaconda3\Lib;C:\py38_x86_64\anaconda3\DLLs;D:\Program Files\IDA 7.5\python\3;%path%
@set PYTHONPATH=C:\py38_x86_64\anaconda3\Lib;C:\py38_x86_64\anaconda3\DLLs;C:\py38_x86_64\anaconda3\Lib\lib-tk;
@start ida.exe
@del "D:\Program Files\IDA 7.5\python\use_python2"
@set path=C:\py38_x86_64\anaconda3;C:\py38_x86_64\anaconda3\Scripts;C:\py38_x86_64\anaconda3\Library\bin;C:\py38_x86_64\anaconda3\Lib;C:\py38_x86_64\anaconda3\DLLs;D:\Program Files\IDA 7.5\python\3;%path%
@set PYTHONPATH=C:\py38_x86_64\anaconda3\Lib;C:\py38_x86_64\anaconda3\DLLs;C:\py38_x86_64\anaconda3\Lib\lib-tk;
@start ida64.exe
三、第三方模块的配置
import urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read())
import urllib.request; exec(urllib.request.urlopen('https://github.com/eset/ipyida/raw/stable/install_from_ida.py').read())
File "C:\py38_x86_64\anaconda3\Lib\asyncio\events.py", line 501, in add_reader
raise NotImplementedError
NotImplementedError
或
app.shell.set_completer_frame()
AttributeError: 'NoneType' object has no attribute 'set_completer_frame'
解决办法:
在tornado\platform\asyncio.py文件中,在import asyncio之后添加下述修复代码,如(C:\py38_x86_64\anaconda3\Lib\site-packages\tornado\platform\asyncio.py)
import sys
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
如何定位asyncio位置?
简单运行python,然后即可查阅
import asyncio
print(asyncio.__file__)
D:\Program Files\IDA 7.5\plugins\ipyida_plugin_stub.py: encoding declaration in Unicode string (D:/Program Files/IDA 7.5/plugins/ipyida_plugin_stub.py, line 0)
Traceback (most recent call last):
File "D:\Program Files\IDA 7.5\python\2\ida_idaapi.py", line 643, in IDAPython_ExecScript
code = compile(raw.decode(encoding), script, 'exec')
File "D:/Program Files/IDA 7.5/plugins/ipyida_plugin_stub.py", line 0
SyntaxError: encoding declaration in Unicode string
通过pip安装的ipyida,可通过
import ipyida
print(ipyida.__file__)
查询对应python安装的ipyida目录下的ipyida_plugin_stub.py,复制一份到plugins\ipyida.py即可,然后做下图修改
通过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
最后测试
from PyQt5 import QtCore, QtSvg, QtWidgets, QtGui, QtPrintSupport
git clone https://github.com/tmr232/Sark.git
cd Sark
python setup.py install
看雪ID:HHHso
https://bbs.pediy.com/user-home-463990.htm
*本文由看雪论坛 HHHso 原创,转载请注明来自看雪社区。
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!