BUFF | Smali介绍与学习

在接下来几篇文章里,我们将跟小雅一起学习Smali动态调试

这可比之前的静态分析要省时喔。

01 

动态分析方法

静态分析反编译代码往往是逆向分析的第一步,在对代码逻辑大致了解后,我们就可以使用动态分析的方法验证猜想、加速分析和实现破解。

Android 动态分析

泛指一切需要运行应用才能实现的分析技术 

· Smali动态调试
· Hook动态注入
· DDMS监控工具

Android动态分析の常用方法

   近年来,依托于优雅便捷的Frida框架,很多人初学逆向就开始玩FRIDA HOOK,上手之后都会惊喜于它的简单和强大,几行JS代码就抓到了入参和返回值,甚至直接嗅探到了关键代码,因此感觉不学Smali也可以轻松完成逆向,那么多一事不如少一事,不学Smali也罢。 

我认为这是不妥当的,了解和学习Smali可以帮助加深对Android逆向工程的的理解,不论是Smali插桩还是Apk重签名,都是很有价值的知识,如果我们想在逆向之路上走的更长更远,就应该体系化的汲取知识,切忌浮躁和跃进。除此之外,Smali动态调试是一种通用的、常规化的动态分析技术,它和Hook技术在逆向中互相补充,不能重Hook而轻Smali调试,至少在目前看来,这个技术还没有过时。

02

Smali

通俗的来讲,Smali代码是DEX文件反汇编的结果,学习Smali就是学习其出处、语法和寄存器的过程。

DEX

原生Android应用是由Java/Kotlin语言写的,那么从Java源码到成为一个APK文件,其中经过了非常复杂繁多的步骤,我们这里只关注代码的编译执行过程。

Android程序

Android平台上主要使用Java语言来开发程序,但Android上的程序运行机制和标准的Java程序并不一样。因为手机系统的内存和处理器性能较差。

为了解决该问题,以及摆脱和Java母公司的版权纠纷,Google开发了Dalvik虚拟机,Android程序就运行在其上。

03 

Java代码从编写到执行

 编写Java代码。

✔ 所有的Java代码通过Java编译器(javac)编译成java字节码,即.class文件。

 Java字节码在Java虚拟机上被解释成机器语言后,程序执行。

   到目前为止,我们看不到DEX的影子,那就更别提什么Smali了,显然DEX是Android中独有的文件格式,请看下文:

Android中的Java代码从编写到执行


 编写Java代码。

✔ 所有的Java代码通过Java编译器(javac)编译成java字节码,即.class文件。

 Java字节码通过Android的dx工具转换为Dalvik字节码,即.dex文件。

✔ Dalvik字节码在Dalvik虚拟机上运行。

   我们终于知道DEX的出处了,我们可以瞧一瞧Apk中的DEX文件。

Apkの内部结构

Apk实际上是一种特殊的压缩包,我们可以直接通过360压缩或者别的压缩工具打开。我们罗列和陈述一下展开后的文件结构,需要注意的是,为了满足自身的架构和设计,几乎所有应用的文件结构都会比我们罗列出来的多一些东西,但我们罗列的七部分是固定不变的基础。

640?wx_fmt=png

640?wx_fmt=png

   我们使用Android逆向助手反编译APK得到Smali代码,它集成了Apktool等一系列工具并实现了可视化拖拽操作。如果你喜欢命令行操作,可以搜索Apktool,如果你使用Mac电脑,可以下载这个工具,界面和操作几乎和windows中一样https://github.com/Jermic/Android-Crack-Tool 。

提示1

我演示了Windows下的操作,工具放在了网盘里,也可以自行搜索下载。

640?wx_fmt=jpeg

640?wx_fmt=png

提示2

以smali开头的文件夹里存放的就是层层叠叠的smali代码,你可能会困惑为什么有两个smali文件夹,这是因为有两个dex文件,那为什么java源码编译和打包后变成两个了Davlik字节码文件呢?一个不好吗?这就涉及到DEX的分包问题了,我之后会提到。

用文本编辑器打开smali文件夹中的众多Smali文件

640?wx_fmt=png

   乍看会有些陌生和恐慌,但不用担心,有非常好的教程和工具可以帮助我们学习Smali语法,除此之外也可以在群里讨论和交流Smali语法。

04

640?wx_fmt=png本篇重点! 
本篇重点!

Smali语法学习

1、工具

我们可以使用Java和Smali互转工具来验证与学习Smail语法,工具已放在上一篇百度云中,叫做J2S2J1。

2、教程

我本想自己写一篇完整的教程,但无意中发现了一篇内容、表述、排版均优的教程,附上链接,大家只需要配合上述工具,就可以快速入门Smali语法。https://juejin.im/entry/579ef6e37db2a2005a6350d8

今日份Smali语法介绍和学习到此结束,

小雅会了,你学会了吗?

明日内容:学习Smali动态调试

———— / END / ————

640?wx_fmt=png

文字:Lilac

排版:小雅

每早九点,

每天一更。

内容概要:本文档聚焦于通信系统中的调制解调技术Turbo码的结合应用,系统研究了GMSK调制的二比特差分解调方法,以及Turbo码分别BPSK、GMSK调制方式联合使用的系统性能。通过Matlab平台实现了完整的通信链路仿真,涵盖信号调制、信道编码、解调解码及误码率分析等关键环节,深入探讨了不同调制体制下Turbo编码系统的抗干扰能力频谱效率表现。研究不仅提供了算法实现代码,还包含了详细的性能对比分析,有助于理解现代数字通信中高效编码调制技术的设计原理工程实现。此外,文档附带多个相关科研方向的仿真案例,展现出广泛的技术延展性实际应用价值。; 适合人群:具备通信原理、数字信号处理等相关基础知识,熟悉Matlab编程环境,正在从事无线通信系统仿真、信道编码理论研究或相关领域科研工作的研究生、高校教师及工程技术研究人员。; 使用场景及目标:①深入掌握GMSK调制Turbo码相结合的技术机制,理解其在提高通信可靠性频谱利用率方面的优势;②熟练运用Matlab构建完整的数字通信仿真系统,完成从调制编码到解调译码的全流程建模性能评估;③为无人机通信、卫星通信、移动通信等实际应用场景下的高可靠传输系统设计提供理论支持算法参考。; 阅读建议:建议结合所提供的Matlab代码逐模块运行调试,重点关注GMSK差分解调过程Turbo译码的迭代收敛特性,同时可参考文档中列出的其他研究课题拓展仿真范围,提升综合科研工程实践能力。
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 标题中所指的"RS485转USB驱动"是一种硬件接口转换技术,其功能在于将传统的RS485通信协议转换为USB接口形式,从而使得现代计算机或设备能够便捷地采用RS485协议的设备展开通信。RS485作为一种在工业控制、远程通信及多点系统中得到普遍应用的串行通信标准,具备传输距离长、抗干扰性能优异等显著优势。文中提及的型号(CH340、CH341、FT232RL、PL2303、Y-105)是几种常见的USB至UART(通用异步接收发送器)桥接芯片,它们在USB接口RS485网络之间充当转换媒介的角色。这些芯片赋予USB通信能力,使得计算机可以通过USB接口RS485网络中的设备执行数据交换。 1. CH340/CH341:这些由韦东山科技研制的USB转串口芯片,常被用于构建低成本的USB转串口适配器。它们提供从USB到UART的转换功能,支持多种波特率的设定,并且在Windows操作系统环境下通常需要安装相应的驱动程序方可正常运作。 2. FT232RL:FTDI公司推出的一款高性能且低功耗的USB到UART桥接器。FT232RL配备全速USB 1.1接口,支持多种串行接口模式,在数据通信、工业控制等领域能够得到广泛应用。同样地,采用FT232RL的设备在连接至电脑时也需要安装对应的驱动程序。 3. PL2303:硅光电子(Prolific)公司所生产的产品,亦是一种常用的USB到UART桥接芯片。它展现出良好的兼容性以及广泛的驱动程序支持,适用于各类USB至串口的应用场景。 4. Y-105:这可能是一款特定的RS485转USB转换模块,或许集成了上述其中一种或多种转换...
内容概要:本文系统研究了基于ARIMA-CNN-LSTM的混合时间序列预测模型,并提供了完整的Python代码实现。该模型融合了ARIMA模型在处理时间序列趋势平稳性方面的统计优势,以及卷积神经网络(CNN)对局部特征的提取能力和长短期记忆网络(LSTM)对长期依赖关系的建模能力,从而有效提升复杂非线性时序数据的预测精度。研究涵盖了模型架构设计、数据预处理、参数调优、训练流程预测效果评估,适用于能源领域中的负荷、风电、光伏等波动性强的预测任务,具有较强的工程应用价值。; 适合人群:具备一定Python编程基础和机器学习理论知识,从事数据分析、智能预测、能源系统建模等相关工作的科研人员工程技术人员,尤其适合研究生及以上学历或拥有1-3年相关领域实践经验的研究者。; 使用场景及目标:①应用于电力系统负荷预测、新能源发电功率预测等高波动性时序预测任务;②深入理解传统统计模型深度学习模型的融合机制协同优势;③为构建高性能混合预测模型提供可复现的技术方案代码参考,支持进一步优化迁移应用。; 阅读建议:建议读者结合所提供的Python代码在Jupyter Notebook或类似环境中动手实践,重点关注各子模型的功能划分、数据流向融合策略,掌握超参数调节方法模型评估指标分析,并尝试将其应用于其他时序预测场景以验证模型的泛化能力。
内容概要:本文研究了面向电网频率稳定的虚拟同步发电机(VSG)惯量阻尼协同自适应控制策略,旨在提升高比例可再生能源接入背景下电力系统的频率稳定性。通过Simulink仿真Matlab代码实现,构建了双机并联VSG系统模型,融合虚拟阻抗、预同步控制、微电网黑启动等关键技术,实现并网过程中的功率平稳分配动态响应优化。研究重点在于设计一种惯量和阻尼系数的自适应调节机制,使其能够根据电网频率变化实时调整控制参数,从而有效抑制频率扰动,克服传统VSG控制中因参数固定导致的响应滞后或过度调节问题。该策略显著提升了微电网在动态工况下的运行稳定性可靠性。; 适合人群:具备电力系统分析、自动控制理论及新能源并网技术等相关专业知识,熟悉Matlab/Simulink仿真环境,从事电力电子、微电网控制、可再生能源集成等领域科研或工程开发工作的研究生、工程师及技术人员。; 使用场景及目标:①深入研究虚拟同步发电机在孤岛/并网模式切换过程中的控制特性;②实现VSG惯量阻抗参数的在线自适应调节以增强系统频率支撑能力;③掌握双机并联运行、黑启动流程、预同步逻辑及虚拟阻抗设计等关键环节的建模仿真方法;④为构建高弹性、自适应的新型电力系统提供理论依据和技术验证平台。; 阅读建议:建议结合所提供的Matlab代码Simulink仿真模型进行实践操作,重点关注控制策略的模块化设计、参数整定过程以及自适应算法的实现逻辑,通过对比传统固定参数控制所提自适应控制在频率响应、功率分配等方面的仿真结果,深入理解其优越性工程应用价值。
内容概要:本文系统研究了面向无电流传感的谐振型双有源桥(DAB)变换器的模型预测控制(MPC)策略,并基于Simulink平台完成了完整的仿真实现。该方法通过构建精确的系统预测模型,在不依赖物理电流传感器的前提下,实现对DAB变换器的高性能控制,有效降低了系统硬件成本体积,提升了可靠性和集成度。研究深入分析了该MPC控制策略在动态响应速度、稳态电压精度以及抗负载扰动能力等方面的综合性能,为谐振型DC-DC变换器在新能源、电动汽车等领域的高集成度、低成本应用提供了先进的控制理论支持和技术实现方案。; 适合人群:从事电力电子变换器拓扑控制、新能源系统集成、模型预测控制算法研究的高校研究生、科研院所研究人员及企业电力电子研发工程师。; 使用场景及目标:①应用于对体积和成本敏感的隔离型DC-DC变换器先进控制设计;②实现无电流传感器条件下的精确能量传输控制,提升系统鲁棒性可靠性;③通过Simulink仿真平台复现并验证MPC控制算法的有效性、动态性能鲁棒性,服务于高水平学术论文的成果复现实际工程项目的控制原型开发。; 阅读建议:读者应具备扎实的电力电子变换器工作原理和模型预测控制理论基础,建议在学习过程中紧密结合所提供的Simulink仿真模型,动手进行参数调试仿真分析,重点关注预测模型的建立、代价函数的构造优化求解过程,从而深刻掌握无传感器MPC控制的核心思想实现细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值