so文件反编译为python代码_Android逆向——so反编译分析由浅入深(回帖奖励)

本文深入探讨Android逆向工程,通过反编译so文件,了解C/C++代码在ARM汇编层的实现。从HelloWorld到基本运算,再到%运算的复杂处理,揭示了ARM指令集的特性和优化。同时,讨论了用Python实现EOR逻辑计算的过程,以及用替代方法提升运行效率的可能性。
摘要由CSDN通过智能技术生成

如果可以,请自己编写so文件库,然后进行反编译自行学习。这样的进步是最快的。

这篇分析仅此一份,心血付出。

0x00 前言

说明

1.之前学习Android逆向的时候跑的太快,很多东西没有咀嚼直接吞咽,虽然看起来有一定成果,但是很快就进入瓶颈状态。所以逆向这东西还是要慢慢静下心来搞。

2.网上的分析文章大多都是拿来直接F5,虽然是快速解决问题,但是却不利于学习。依赖于机器终归不是一种好的学习方式,或许在工作中可以调高效率。

3.巩固基础知识,才能爬的更高。

4.看见汇编别怂,都是纸老虎,无非绕一点。

内容

1.亘古不变的HelloWord

2.有趣的+ - * /

3.论ARM处理%的复杂程度

4.探讨取代%会不会提高运行效率

4.python实现EOR逻辑的计算

0x01 亘古不变的HelloWord

如何搞到so文件?这个我稍微提一下。Android Studio 选c++.然后创建工程即可。不会请百度吧。有的东西不重复。

学编程很多都是从HelloWorld开始的,逆向当然也可以从HelloWorld开始啦。当然由于太简单,会缩短篇幅。

1. 程序代码

不解释。

void Hello()

{

printf("HelloWorld");

}

2. 逆向so文件

这个就是我们的ARM汇编文件了。

PUSH            {R7,LR}

MOV             R7, SP

SUB             SP, SP, #8

ARM准备阶段,可以选择性忽视。

ADD             SP, SP, #8

POP             {R7,PC}

ARM结束字段,也可以选择性忽视。

但是看到这里,可以简单的理解一下,就是首先开辟内存,用完之后就是释放内存。

剩下的还有什么

LDR             R0, =(aHelloworld - 0x430C)

ADD             R0, PC  ; "HelloWorld"

BLX             printf

STR             R0, [SP,#0x10+var_C]

LDR             R0, =(aHelloworld - 0x430C)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值