有的安卓程序反编译后是samli文件,这是程序员直接用smali语言写的,还是是用java写的?

作者&投稿:望珠 (若有异议请与网页底部的电邮联系)
android smali是源码吗~

  千峰扣丁IT教育总结:smali 是Android 应用程序(*.apk)反编译生成的文件格式,
是一种类似于汇编语言的底层计算机语言。阅读和书写smali语法都需要极大的耐心和勇气,
本文将介绍如何反编译和运行第三方的程序(smali)代码。

  Android程序文件, 即apk文件, 其实是一个zip压缩包, 其文件结构如下:  classes.dex是程序的核心文件,是java语言的代码编译后的二进制字节码程序。这种字节码程序是编译专供机器阅读的,
类似于汇编语言的机器码。然而如果想直接阅读这部分程序, 最好的方法就是将该文件转化为smali文件。  apktool  著名的反编译工具 apktool
就可以完成这部分工作。 它将classes.dex文件反编译成一堆的smali文件, 这些文件按源码的包结构保存在各自的文件夹中。如下所示:  另外,
apktool 工具强大之处在于它不仅可以反编译apk文件, 而且可以根据现有的smali 文件生成新的apk文件。
这就给汉化apk或者去除apk内嵌广告提供了可能。  smali语法类似于汇编语言的语法, 涉及寄存器的直接操作, 可以直接阅读, 但羞涩难懂,
尤其是在代码混淆之后。

反编译步骤:

下载apktool 并设置环境变量
命令行进入apk目录执行:apktool d xx.apk (如果遇到一些错误说明apk做了防破解处理)
执行成功后会生成xx文件夹,进入xx文件夹修改需要修改的内容,如果需要修改代码,进入xx\smali\里面,需要懂一些smali语法
修改完后回到命令行,执行:apktool b xx ,会在xx文件夹里面生成一个dist文件夹,里面的apk就是回编译的,这个apk是没有签名的
下载网上的签名工具对apk签名,完了就可以安装了(如果你下载了源码或者sdk,里面自带一个signapk也可以签名)

您好,
1、原始类型:
v void 只能用于返回值类型
Z boolean
B byte
S short
C char
I int
J long(64位)
F float
D double(64位)
对象类型:
Lpackage/name/ObjectName相当于java中的package.name.ObjectName解释如下:
L:表示这是一个对象类型
package/name:该对象所在的包
;:表示对象名称的结束
数组的表示形式:
[I :表示一个整形的一维数组,相当于java的int[];
对于多维数组,只要增加[ 就行了,[[I = int[][];注:每一维最多255个;
对象数组的表示形式:
[Ljava/lang/String 表示一个String的对象数组;
方法的表示形式:
Lpackage/name/ObjectName;——>methodName(III)Z 详解如下:
Lpackage/name/ObjectName 表示类型
methodName 表示方法名
字段的表示形式:
Lpackage/name/ObjectName;——>FieldName:Ljava/lang/String;
即表示: 包名,字段名和各字段类型
方法的传参:
当一个方法被调用的时候,方法的参数被置于最后N个寄存器中;
例如,一个方法有2个参数,5个寄存器(v0~v4)
那么,参数将置于最后2个寄存器(v3和v4)
非静态方法中的第一个参数总是调用该方法的对象;
说明:对于静态方法除了没有隐含的this参数外,其他都一样
寄存器的命名方式:
V命名
P命名 第一个寄存器就是方法中的第一个参数寄存器
比较:使用P命名是为了防止以后如果在方法中增加寄存器,需要对参数寄存器重新进行编号的缺点:
特别说明一下:Long和Double类型是64位的,需要2个寄存器

例如:对于非静态方法
LMyObject——>myMethod(IJZ)V;
有4个参数:LMyObject,int,long,bool; 需要5个寄存器来存储参数;
P0 this
P1 I (int)
P2,P3 J (long)
P4 Z(bool)

用android代码(基于java)写的。smali类似机器语言。反编译出来的是机器语言


如何用c#反编译安卓应用程序?
1、首先在百度上搜索下载反编译工具ILSpy,解压后如图,双击.exe文件打开解压工具。2、选择file选项,点击“打开”。3、接着选择要反编译的文件,点击“打开”。4、这是会出现一个对话框,在这个对话框里面就可以看到源码了。5、如果想把源码保存下来,自己在源码的基础上修改,点击"file"下的“Save ...

有的安卓程序反编译后是samli文件,这是程序员直接用smali语言写的,还是...
您好,1、原始类型:v void 只能用于返回值类型 Z boolean B byte S short C char I int J long(64位)F float D double(64位)对象类型:Lpackage\/name\/ObjectName相当于java中的package.name.ObjectName解释如下:L:表示这是一个对象类型 package\/name:该对象所...

APK反编译及回编译出错的常见原因和解决策略
首先,编译系统程序时,确保已经加载了framework-res.apk框架,这是至关重要的一步。如果漏掉,可能会导致编译失败。其次,反编译的文件和framework-res.apk需要确保是官方原版未改动的,因为非官方或改动过的文件可能导致编译问题。建议直接从官方固件中提取文件进行操作。如图所示,如果你手头的文件无法直接...

如何解决APK反编译及回编译过程中的编译错误问题?
首先,确保加载了framework-res.apk框架,这在编译系统程序时是必不可少的。如果缺失,务必从官方固件中获取。其次,务必使用官方原版或未改动过的反编文件,因为非官方修改可能导致编译失败。如图所示,未经处理的文件是无法直接编译的。对于工具版本问题,确认你使用的APK编译工具apktool是否为最新版本,至少...

安卓反编译获得源代码有什么作用呢?
可以不劳而获的copy别人的代码了呀,比如别人的应用效果很炫,你自己做不出来,然后反编译出来之后,你懂的,可以参考学习下的嘛

安卓反编译出来的代码如何修改重新生成APK
反编译步骤:下载apktool 并设置环境变量 命令行进入apk目录执行:apktool d xx.apk (如果遇到一些错误说明apk做了防破解处理)执行成功后会生成xx文件夹,进入xx文件夹修改需要修改的内容,如果需要修改代码,进入xx\\smali\\里面,需要懂一些smali语法 修改完后回到命令行,执行:apktool b xx ,会...

安卓APP反编译后的程序源代码在哪里
assets是html文件,lib是jar,res是资源文件。AndroidManifest是配置文件,源码在smali和original里面

android反编译生成的代码如下 像MainActivity.access$000(this.this$0...
access$0表示调用一个外部类的方法,说明这段代码是在内部类中使用的:在调用的外部类方法定义代码的上面,应该会有一段。methodstaticsyntheticaccess$0。的代码,这个代码里面才是真正要调用的方法。安卓虚拟机指令在调用外部类方法的时候,需要区分类的调用关系。thiscmdisdeprecated,usethed2j-dex2jarif...

关于android反编译软件jd-gui,反编译出的都是.class文件,怎样才能得到...
推荐于2017-12-15 12:49:49 最佳答案 jd-gui就是反编译成JAVA的。点file 点Save all sources将jar包保存为JAVA文件。 本回答由提问者推荐 举报| 答案纠错 | 评论 2 0 guiziwen 采纳率:42% 擅长: C\/C++ JAVA相关 为您推荐: jd-gui安卓 jd-gui有搜索功能吗 jd-gui可以破解游戏吗 exe程序反...

反编译安卓软件后,改了他的名字,但是回编译不行,
大体的意思为qihoo这个属性没有资源定义!你这个应该是属于加了密的APK包!这类加密后的文件,是无法回编译的。要想正常回编译,首先要做的是先进行脱壳解密,脱了壳后的文件才能反编译,之后才能正常回编译!

南涧彝族自治县13417812995: android反编译APK后,是smali文件,能反编译成dex文件吗 -
和很刺五: dex文件不需要反编译的,apk就是个压缩文件,dex可以通过解压直接得到

南涧彝族自治县13417812995: 如何获得android程序的.smali文件 -
和很刺五: smali 是Android 应用程序(*.apk)反编译生成的文件格式, 是一种类似于汇编语言的底层计算机语言.阅读和书写smali语法都需要极大的耐心和勇气, 本文将介绍如何反编译和运行第三方的程序(smali)代码.展开全部 什么是smali 文件...

南涧彝族自治县13417812995: 反编译后得到的是什么文件? -
和很刺五: 1、反编译后得到的是汇编语言. 2、还有com程序 3、一般都是汇编,不会是源程序.除非是汇编编的.但是现在也有一些vb的反编译软件. 4、到处都有的是系统自带的debug.exe 到cmd命令行 c:\>debug 1.exe -u0 -d0 -g -q ----------分别是看反汇编代码,数据区,运行,退出四个命令.更多看帮助. 还有其他一些调试软件,比如trw2000,OllyDBG等

南涧彝族自治县13417812995: 安卓里面总是有一些叫:“反编译xxx”,不懂的是,这个反编译到底是什么意思?能不能通俗的讲下 -
和很刺五: 当应用程序打包之后,里面的代码会被编译成无法被人为识别和读取的字节码,反编译就是将已经编译好的字节码文件编程源代码的过程

南涧彝族自治县13417812995: android反编译后很多java文件没有 -
和很刺五: 反编译后肯定找不到. 解释:反编译后,class文件已经变为java文件了,所以肯定是没办法找到的. 备注:反编译工具都是针对的已经编译好的class文件,备注等内容是没办法被还原的,再就是反编译结果并不一定是源码的页面展示样式,代码顺序可能有变动.

南涧彝族自治县13417812995: APK反编译后的smali文件如何修改其中的一个数值? -
和很刺五: 反编译apk步骤,把文件名的 .apk修改为 .rar,解压就看到res,lib等文件,其中classes.dex是需要你反编译的java代码.把apk文件修改成.rar文件解压获得classes.dex和资源文件. dex2jar-0.0.7.9-SNAPSHOT 拖动生成的classes.dex文件到dex2jar.bat突变生成classes.dex.dex2jar.jar文件,解压.jar文件获得.class文件,用XJad进行反编译java文件.

南涧彝族自治县13417812995: 怎么查看反编译出来的androidmanifest文件 -
和很刺五: apktool反编译xml等资源文件:a. 安装java环境,下载文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2;把这两个文件解压到同一目录下,该目录cmd中运行apktool获得帮助信息;b. apktool d XXX.apk ABC : 反编译XXX.apk到文件夹ABC c. apktool b ABC :从反编译后的文件夹ABC重建APK,输出到ABC\dist\out.apk(该apk没有签名) d. 这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;

南涧彝族自治县13417812995: android反编译之后怎么更快的看懂代码 -
和很刺五: 你可以试试反编译后在eclipse中看代码非常方便,因此将反编译后的android代码添加到 eclipse是很有必要的.步骤:1、使用dex2jar工具,将apk反编译成.jar后缀的文件(该文件是所有.class文件的压缩包);2、使用jd-gui.exe工具,打开上一...

南涧彝族自治县13417812995: android apk 反编译怎么编译 -
和很刺五: Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码.之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能.最近又有一种新的方法来...

南涧彝族自治县13417812995: 你好,我想问问Android反编译之后哪些文件有用?smail文件夹里的东西有用吗? -
和很刺五: smali是通过安卓的java代码经过编译后得到的,可以理解为delvik虚拟机的“汇编语言”.一般反编译apk做修改都是直接修改smali代码的.smali代码其实比较容易懂,是可以和java代码对应上的.你所希望的直接在IDE修改java代码应该是无法达到的.希望采纳.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网