安卓逆向学习

工具篇

1. IDA

下载地址:

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 问题 STURSTR的区别是什么?

相同点: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

插件

  1. “ Karta”是IDA的python插件,其功能是在已经编译过的二进制文件中搜索是否使用了开源的代码。该插件是为了匹配大体积二进制文件中的开放源代码库的开源代码(通常是查找固件)。对于每天处理固件的人来说,反复的执行net-snmp显然是在浪费时间。所以需要一个工具来识别二进制文件所使用的开源,并在IDA中自动匹配。

大赛

  • 海淀区网络与信息安全管理员大赛

实战知识点
  1. 逆向花指令的定义:https://www.anquanke.com/post/id/208682#

请帮助

1:有知道有哪些好的实验教程的请在评论区指出;

2:有其他赛事的请评论区补充;

你可能感兴趣的:(逆向hook,学习)