Smail语法基本知识(二)

android 逆向工程 smail 语法学习 众所周知,android 是开源的,现在市场上反编译别人的劳动果实的人也不少,所以我们也是有必要学习下smail语言,(就是android工程反编译后出的语法语音),看看改怎么给我们的代码 “埋雷” ,才能更好的保护好我们自己的劳动成果。 接下来就让我们来学习下吧~!(事先声明:本人也是初学smail语言,有介绍不当的地方还请海涵,并请指出,大家一起学习) ================== 阅读详情

这篇文章介绍了一些常见的指令语法,

想要知道更全的指令语法,请见:http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html


.标记

.field                 变量
.method           方法的起始
.end method    方法的终止
.locals              本地寄存器数目(总寄存器数reg - 参数寄存器数目para)

移动

move vx,vy                      将vy的内容移动到vx中。 两个寄存器必须是最前面256个寄存器中之一。
move-object vx,vy          移动对象的引用。
move-result vx               将前一个方法的结果值移动到vx寄存器中
move-result-wide vx      与上条相似,但是移动64位结果到vx,vx+1

返回值

return-void                      返回空值
return vx                         返回vx寄存器的值
return-object vx              返回vx寄存器的值(对象)

常量定义

const/4   vx,lit4             移动4bit常量到vx                      例如:const/4 v0, 0x0
const/16 vx,lit16           移动16bit常量到vx                    例如:const/16 v0, #int 10
const vx, lit32               移动integer常量到vx                 例如:const v0, #12345678 // #00BC614E
const-string vx,string_id     移动String的引用到vx         例如:const-string v3, "none"

跳转

if-eqz vx,target  vx为0,跳转到目标

if-nez vx,target  vx非0,跳转到目标

if-gez vx,target  vx>=0 ,跳转到目标

if-ltz vx,target   vx<0 ,跳转到目标

结论:eq ,e是等于;ne是不等于 g是大于,l是小于 ,z是零。

if-eq vx,vy,target ;if-ne vx,vy,target;if-ge vx, vy,target;if-ltz vx,target 类似可知。

当然还有无条件跳转的 goto target



读取,写入寄存器

sput-object vx,field_id  将对象引用放入静态域内:方向 vx->field_id

iput vx,vy, field_id        将vx的放入实例域内,vx是vy的引用对象之一

对象创建

new-instance vx,type  创建 type类型的对象,放入vx中

方法调用

invoke-virtual { parameters }, methodtocall   使用参数调用虚方法
invoke-super {parameter},methodtocall        使用参数调用父类方法
invoke-direct { parameters }, methodtocall    
invoke-static {parameters}, methodtocall

3、Smail语法 apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM[1]与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行。Smali,Baksmali 分别是指安卓系统里的 Java 虚拟机(Dalvik)所使用的一种 dex 格式文件的汇编器,反汇编器。 阅读详情

相关推荐

电磁流量计模拟前端电路设计与优化

模拟前端电路(AFE)是传感器信号处理的核心环节,通过放大、滤波和模数转换实现信号调理。其设计需重点考虑放大器共模抑制比(CMRR)和ADC分辨率等关键参数,在电磁流量计等工业测量应用中,AD8220仪表放大器与AD7172-2 Σ-Δ型ADC的组合能有效简化传统多级架构。现代过采样技术结合数字滤波可替代模拟滤波器,显著提升系统集成度与测量精度,这种设计方法同样适用于压力传感、生物电信号采集等需要高精度信号调理的场景。

weixin_42602241的博客 616

逆向破解必备基础smail基础语法

// 此代码由autojs交流群整理提供 一键加群 Smali基本语法 .field private isFlag:z  定义变量 .method  方法 .parameter  方法参数 .prologue  方法开始 .line 12  此方法位于第12行 invoke-super  调用父函数 const/high16 v0, 0x7fo3  把0x7fo3赋值给v0 invoke-direct  调用函数 return-void  函数返回void .end method  函数结束 new-.

九黎AJ的博客 2655

SAP(ERP)工艺路线(Routing)业务视角解析

工艺路线(Routing)也是PP模块,即生产制造模块中最重要核心主数据之一,也是ERP(SAP)顾问,必需从业务与系统深入掌握的重要主数据,它也是整个生产计划与生产流程的重要基础。因为执行步骤只是操作层面的认知,业务顾问需要从业务本质上去理解它,要真正从业务视角理解工艺路线的业务价值,而不仅仅是操作层面的认知。因此将工艺路线理解为“有以上业务本质的理解,然后进到SAP系统中,就容易理解工艺路线(Routing)的每一组成部分结构与功能了,本质就是理解制造企业如何将设计意图转化为物理现实的编码规则。

m0_45197968的博客 1501

Android逆向笔记-4种方式破解下例中的smali代码

原始的代码如下: 这里可以直接看到,用户名是hfdcxy,密码是1234。 如何破解,提供4个思路: 改法一:

IT1995的博客 3658

Windows下快速搭建Kettle开发环境:基于9.4.0.0版本的保姆级教程

本文提供Windows系统下Kettle 9.4.0.0开发环境的详细搭建指南,涵盖源码获取、Maven配置优化、高效编译及部署运行全流程。通过实战验证的步骤和常见问题解决方案,帮助数据工程师快速完成环境配置,提升ETL开发效率。

weixin_28829479的博客 329

搭建你的第一个MCP服务器(Python版)

在上两篇博客中,我们已经对MCP(Model Context Protocol)有了初步的了解。MCP是一种强大的协议,能够简化LLM(大型语言模型)与外部工具的交互。今天,我们将通过一个具体的例子,展示如何使用Python搭建一个简单的MCP服务器。通过这个过程,你将能够更好地理解MCP的工作原理,并为后续的应用开发打下基础。在MCP中,工具(Tool)是服务器提供给LLM的接口。我们将定义一个简单的工具,用于接收输入文本并返回处理后的结果。首先,我们需要定义一个工具类。这个工具类将继承自,并实现run。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 8095

深入对android的smali的指令解析

1.普通字段读写操作 iget-object vAA,vBB,filed_id: 表示读取vAA寄存器中的对象中的filed_id对象的引用值给VBB寄存器。 iget_boolean vAA,vBB,filed_id: 表示读取vAA寄存器中的对象中的filed_id的值给vBB寄存器。 iget_wide vAA,vBB,filed_id :表示读取vAA寄存器中对象中的filed_id的值给vBB寄存器。 iget vAA,vBB,filed_id:表示vAA寄存器中对象的filed_id值给vBB寄

深耕安全技术研究 3386

基于 PID 算法的 STM32 步进电机高精度位置控制系统设计与实现(工业自动化应用)

硬件层面:选用 STM32F103C8T6+A4988 + 欧姆龙编码器的组合,兼顾工业可靠性与成本,接线需注意强弱电分离和信号抗干扰;软件层面:核心为位置式 PID 闭环控制,Mermaid 流程图清晰展现 “采集 - 运算 - 驱动” 的闭环逻辑,代码模块化易移植;性能层面:无负载定位误差≤±1 脉冲,带载误差≤±3 脉冲,满足工业自动化高精度位置控制需求。

weixin_42300449的博客 194

安卓逆向系列教程(一)Dalvik 指令集

安卓逆向系列教程(一)Dalvik 指令集 作者:飞龙 寄存器Dalvik 指令集完全基于寄存器,也就是说,没有栈。所有寄存器都是 32 位,无类型的。也就是说,虽然编译器会为每个局部变量分配一个寄存器,但是理论上一个寄存器中可以存放一个int,之后存放一个String(的引用),之后再存放一个别的东西。如果要处理 64 位的值,需要连续的两个寄存器,但是代码中仍然只写一个寄存器。这种情况下,你

龙哥盟 5万+

YOLOv8融合HAttention:激活更多像素的注意力机制科研实践指南

HAttention通过层级化像素激活与融合的设计,为YOLOv8的像素级特征利用能力带来了质的飞跃。从原理理解到代码实现,再到集成调优,每一步都是科研中“解决像素信息遗漏难题”的具体实践。如果你在实验中发现某类细节或大尺度目标的检测仍有不足,可以尝试结合数据增强(如随机裁剪、多尺度训练)来强化模型对像素特征的学习能力。科研的价值在于不断挖掘技术的潜力,希望这份指南能真正帮你在目标检测的像素级特征利用领域找到新的突破点,祝你在科研探索中持续收获创新与成长。

FJN110的博客 105

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1070

Android反编译基础 - smali

        我们常用的反编译三件套指的是ApkTool, dex2jar, jdgui。实际上经过ApkTool反编译的的代码都是smali,后面两个工具只是为了我们方便阅读,将smali语法转为java。但是工具不是万能的,很多时候转换结果不是那么令人满意。所以要想入门逆向工程,了解smali的语法是必须的。这种语言有点像汇编,但是因为我们有java源码可以对照着看,所以学起来还是很快的。而...

u013894711的专栏 4142

GibbsCAM软件二次开发:GibbsCAM软件API接口详解

API(Application Programming Interface,应用程序编程接口)是一种允许不同软件之间进行通信的接口。在GibbsCAM软件中,API提供了与外部程序交互的能力,使得开发者可以利用GibbsCAM的强大功能进行二次开发,定制化满足特定的制造需求。GibbsCAM的API主要基于.NET框架,使用C#或VB.NET等语言进行编程。在GibbsCAM软件中,通过API接口创建自定义几何形状是实现复杂零件设计和加工策略定制的关键步骤。

kkchenjj的博客 1496

Smail语法

Smail语言首先了解什么是smail? apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。 smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM[1]与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行。 S...

测试 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Smail语法基本知识(三)

------------------------------------------------分割线------------------------------------------------------------------------------------- 虽然关于指令集现在还没有讲,但是可以先看一个例子,加深一下理解。 HelloWorldAppActivity.smail

computer165的专栏 1312

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Smail语法(1)

【情景分析】Android apk,反编译之后,我们能阅读到的代码是dalvik字节码 - smali 。有时候,工作需要,必须破解apk里面的一些协议或者方法。以此,借鉴经验,来开发自己的项目。 【官方语法链接】http://www.blogjava.net/midea0978/archive/2012/01/04/367847.html 【语法】 一. 数据类型 1 ...

zhanqq2012的专栏 607

Android逆向学习日记(一) 初学smail

一、 smail语法基础学习

M_iranda的专栏 1470

Smail语法基本知识(一)

Smali 背景:  Smali,是指安卓系统里的 Java 虚拟机(Dalvik)所使用的一种.dex 格式文件的汇编器。  Baksmali 则是反汇编器。  其语法是一种宽松式的 Jasmin/dedexer语法,而且它实现了.dex 格式所有功能(注解,调试信息,线路信息等)。  Smali,Baksmali 分别是冰岛语中编译器,反编译器的叫法。 Smali 语法简

computer165的专栏 3274

smail及其语法

在smali里的所有操作都必须经过寄存器来进行:本地寄存器用v开头数字结尾的符号来表示,如v0、 v1、v2。参数寄存器则使用p开头数字结尾的符号来表示,如p0、p1、p2。特别注意的是,p0不一定是函数中的第一个参数,在非static函数中,p0代指“this",p1表示函数的第一个 参数,p2代表函数中的第二个参数。而在static函数中p0才对应第一个参数(因为Java的static方法中没有this方法)这里要补充两个smali指令 一个是if-eqz 另一个是if-nez 这两条指令是相对的。

SXXYNHHXX的博客 3934

Smail语法(2)指令解析

【重点】归总了一些简单的Smail指令。 1.If语句 if-nez v0,:cond_0 如果结果不为0,就跳转到cond_0标号处 if-eqz v0,:cond_1 如果结果为0,就跳转到cond_1标号处 2.数据操作指令 move v0,v1 将v1的值赋给v0 ,两个寄存器都为4位 move-result...

zhanqq2012的专栏 7442

smail的语法

.locals 3 //表示有局部变量的个数

hongyucai的博客 546

android 逆向project smail 语法学习

众所周知,android 是开源的。如今市场上反编译别人的劳动果实的人也不少。所以我们也是有必要学习下smail语言,(就是androidproject反编译后出的语法语音),看看改怎么给我们的代码 “埋雷” 。才干更好的保护好我们自己的劳动成果。 接下来就让我们来学习下吧~!(事先声明:本人也是初学smail语言,有介绍不当的地方还请海涵,并请指出。大家一起...

aofan9566的博客 288

smail语法 详解

大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR打开鳄鱼小顽皮APK能看到的是(Google Play下载的完整版版本): Where's My Water.zip\ asset\                        lib\                            

肿菜的博客 1027

smail语句学习

一、Smail语法: 1.数据类型: 原始类型: V void,只能用于返回值类型 Z     boolean B byte S short C char I int J long(64位) F float D double(64位) 引用类型: 对象 和 数组 2.smail表现形式 原始类型:用大写字母代替即可,用法无异 引用类型:   对象: L +

鎏嫣宫守护的博客 5568
上一篇: Smail语法基本知识(一)
下一篇: AndEngine Example(1):LineExample
computer165
博客等级 码龄16年 7粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值