https://hex-rays.com/ida-free/#download
https://blog.csdn.net/qq_47403671/article/details/119939585
1怎么分析so文件的入口
2: 怎么使用ida导出数据。
2.1 怎么导出IDA的数据-百度经验 (baidu.com)
2.2 IDA ->编辑 ->导出(shift + E) -> 选择导出的数据类型
3: 怎么分析一个简单的函数
4: 汇编语言意义解析:
STUR X8, [X29,#var_8]
STUR X0, [X29,#var_28]
STR X1, [SP,#0x60+var_30]
4.1 问题 STUR和STR的区别是什么?
相同点:str r0,[r1] str作用是把左边r0寄存器里的值,存入到 右边[r1]内存地址中
不同点:str和 stur的区别是,stur右边的立即数是负数,u代表立即数是负数
4.2 汇编里中括号里[X29,#var_8],这个是什么意思?
undo 待定
4.3 var_30 是什么意思?
undo 待定
5 汇编指令ADRL解析
ADRL X1, 0x28230 ; "Hello from C++"
5.1 ADRL是一条伪指令,它对应于指令ADR,这条指令的作用就是将"Hello from C++"这个常数对应的偏移量,放置到寄存器X1中。
6 汇编指令BL解析
BL ._ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2IDnEEPKc ; std::string::basic_string(char const*)
.text:000000000000EF94
LDUR X0, [X29,#var_28]
6.1 bl跳转会把下一句程序(LDUR)的地址放到lr寄存器中,等._ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2IDnEEPKc执行完成之后,执行mov pc, lr,将lr寄存器中的值赋给pc指针,继续运行LDUR指令,也就值跳转执行完成后会回来
7 汇编指令LDR解析
LDR X8, [SP,#0x60+var_50]
7.1 LDR的作用是将SP,#0x60+var_50这个地址中存储的数值传递给X8
8 move指令解析
MOV DST,SRC(从SRC复制数值,覆盖DST)
9 新知识microcode,学习途径:b站 (待定)
10: 问题: 如何分析so文件里的自定义函数
待定
11:问题: 如何分析so文件里的系统函数
待定
12: 问题: 特征码是否有助于问题11的分析。(待定)
12.1 怎么找到已知函数的特征码
12.2 怎么使用已知的特征码使用代码在程序种查找。
13 IDA python脚本开发
13.1
13.1.1 IDA python文档
https://hex-rays.com/products/ida/support/idapython_docs/
13.1.2 IDC开发文档
https://hex-rays.com/products/ida/support/idadoc/157.shtml
13.1.3 参考文档:https://www.hex-rays.com/documentation/
13.2 文章路径: IDA Pro documentation -> IDA Python Plugin Manual
13.3
参考文档1:https://blog.csdn.net/qq_33583069/article/details/128445048
参考文档2:https://www.jianshu.com/p/183a4d3e26d4
13.4 IDA-Python 重要模块
13.4.1 IDC: 封装IDA与IDC函数的兼容性模块, 提供IDC中所有的函数功能(例如返回段名、起始地址)
13.4.2 idautils: IDA提供的一个高级utils,能够转换成python的相关对象,如列表
13.4.3 idaapi: 通过类的方式,访问更多底层数据
13.5 IDA插件的一个定义文档,当然是C++的。
13.5.1 IDA SDK plugin的文档为https://hex-rays.com/products/ida/support/sdkdoc/classplugin__t.html
13.5.2 参考文档 https://bbs.kanxue.com/thread-269643.htm
13.5.3 参考文档:https://www.freesion.com/article/27871087121/(和13.5.2 都要看完,脚本使用,写插件参考)
13.5.4 参考文档: https://www.lmlphp.com/user/69464/article/item/673323/(13.5.4,13.5.5,13.5.6要一起看)
13.5.5 参考文档: https://blog.csdn.net/m0_53342264/article/details/127477778(13.5.4,13.5.5,13.5.6要一起看,官方文档参考https://hex-rays.com/products/ida/support/idapython_docs/)
13.5.6 参考文档:https://blog.csdn.net/yalecaltech/article/details/104004004(13.5.4,13.5.5,13.5.6要一起看,官方文档参考https://hex-rays.com/products/ida/support/idapython_docs/)
13.5.7 使用pycharm开发idapython 环境配置参考文档。https://blog.csdn.net/qq_45323960/article/details/125493588(有用)
14 IDA python脚本开发官方教程(重点)脚本位置${ida_install_path}/python/examples
14.1 官方doc ,https://hex-rays.com/products/ida/support/idapython_docs/
14.2
14.2.1 脚本位置${ida_install_path}/python/examples/actions.py
14.2.2 脚本运行,打开ida ->file ->scripts file ->选择上述文件。
14.2.2.1执行完毕后会发现在console里会输出下列东东。
Creating a custom icon from raw data!
Action registered. Attaching to menu.
Attached to menu.
Attached to toolbar.
14.2.2.2 还有在edit里会有个类似熊猫的图标,写着say hi ctrl+F12.
14.2.2.3 在代码去右键里也会发现类似熊猫的图标,写着say hi ctrl+F12.
14.2.3 卸载该脚本。脚本运行,打开ida ->file ->scripts file ->选择上述文件。运行完输出下列信息。
Action found; unregistering.
Unregistered.
15: appcall 起什么作用?
待解决的问题
16: 显示debug的函数名。
参考:${IDA_Pro_v7.5_Portable}/python/examples/debugging/show_debug_names.py
17: registers_context_menu.py
没看懂
18:ida右键菜单:
参考:${IDA_Pro_v7.5_Portable}\python\examples\core\dump_extra_comments.py
19:ida菜单栏增加导航。例如:View/Open subviews/Strings
参考: ${IDA_Pro_v7.5_Portable}/python/examples/core/auto_instantiate_widget_plugin.py
20: ida调试安卓
参考文档:https://blog.csdn.net/weixin_38927522/article/details/119704087
21 工具Unidbg
待学习和研究
22
“ Karta”是IDA的python插件,其功能是在已经编译过的二进制文件中搜索是否使用了开源的代码。该插件是为了匹配大体积二进制文件中的开放源代码库的开源代码(通常是查找固件)。对于每天处理固件的人来说,反复的执行net-snmp显然是在浪费时间。所以需要一个工具来识别二进制文件所使用的开源,并在IDA中自动匹配。
海淀区网络与信息安全管理员大赛
逆向花指令的定义:https://www.anquanke.com/post/id/208682#
1:有知道有哪些好的实验教程的请在评论区指出;
2:有其他赛事的请评论区补充;