导航:首页 > 源码编译 > 反编译钱包开发

反编译钱包开发

发布时间:2023-03-27 21:30:43

Ⅰ 如何反编译apk文件

注意:反编译的前提是:开发者没有使用proguard(java代码混淆的工具)。

1.下载反编译工具
需要下载四个工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:将apk中的classes.dex转化成Jar文件。
JD-GUI:反编译工具,可以直接查看Jar包的源代码。
apktool:反编译工具,通过反编译APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:辅助windows批处理工具。
下载地址:
dex2jar:http://code.google.com/p/dex2jar/downloads/list
JD-GUI:http://code.google.com/p/innlab/downloads/lis
apktool:http://code.google.com/p/android-apktool/downloads/list
工具截图:

2.解压缩APK包
apk文件也是一种常见的zip,常用的压缩软件就可轻松地解压apk文件。用压缩软件将apk文件中的文件解压到一个文件夹中,得到APK中的资源包括XML文件和classes.dex文件,classes.dex就是java文件编译再通过dx工具打包而成的。
解压截图:

3.反编译dex文件
解压apk文件后,你会发现res目录的图片没有加密,但java源码编译成了一个classes.dex文件,无法用普通的反编译class文件的方法来处理,dex2jar可以将dex文件转换成普通的jar包。
解压下载的dex2jar,把解压后的文件夹放到系统盘跟目录中并把这个目录加到系统path变量中,就可以直接用:dex2jar.bat或dex2jar.sh转换dex文件了。
DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路径)。
将在同目录得到普通jar包:classes_dex2jar.jar,就可以用处理普通jar包的方法来反编译这个jar包得到原文件。
编译截图:

生成jar文件的截图如下:

4.反编译jar包
得到jar包后,下载自已喜欢的反编译工具,推荐使用JD-GUI,有比较简单的图形界面,可以反编译单个class文件,也可以反编译jar包,比较方便。
打开压缩文件JD-GUI,运行jd-gui.exe,打开上面生成的jar包,即可看到源代码了。
截图如下:

5.反编译xml文件
打开解压的res\layout目录,有很多xml文件,如果你想看下作者是如何设计界面的,你会很失望,因为你看到的是一大堆乱码!这个时候我们需要用到的是apktool。
具体操作方法:将下载的apktool和apktool-install-windows-r05-ibot两个包解压到同一个文件夹下,这个文件夹有三个文件:aapt.exe,apktool.bat,apktool.jar。把这个文件夹也放到系统盘的根目录中并把这个目录加到path变量中。以HelloWord.apk为例:
在DOS命令行中输入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夹,此文件夹中的xml文件就是编译好的可以正常查看的文件。
截图如下:

生成的文件:

这样就得到了可以得到编译的源码和XML资源。
注意:文件的路径中最好不要出现中文!

Ⅱ 反编译是什么意思

计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,

某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。

(2)反编译钱包开发扩展阅读

反编译是一个复杂的过程,反编译软件有:

1、SWF相关的反编译程序

Action Script Viewer

第一个也是最强大的商业SWF反编译工具,同类产品中,它的AS代码反编译效果最好,SWF转Fla工程重建成功率最高。

2、Android相关的反编译程序

SMALI/BAKSMAL

SMALI/BAKSMALI是一个强大的apk文件编辑工具,用于Dalvik虚拟机(Google公司自己设计用于Android平台的虚拟机)来反编译和回编译classes.dex。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。

3、python相关的反编译程序

uncompyle2

uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件。

参考资料来源:网络-反向编译

Ⅲ 怎么反编译apk

一、dexmp方法

dexmp是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件mp到txt文件中:

D:\Program
Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexmp.exe -d
classes.dex > spk.mp.txt

得到的文件内容,描述了类的信息,但实在是不好读啊~~~~

二、dex2jar + XJad 方法

该方法是使用dex2jar.jar包,将classes.dex文件解包成jar,在通过XJad(或者其他class反编译工具)进行java反编译。如:

1、dex2jar.bat d:\play\classes.dex

默认的输出路径同classes.dex,生成的文件名为classes.dex.dex2jar.jar

2、使用XJad反编译该jar包

之后的使用方法,大家都懂的:)

该方法的好处在于,通过XJad反编译后,大家可直接开到java源文件,缺点在于喊穗闷只能反编译出开发时的java文件,而开发时使用的lib包不能反编译出来。

三、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法

这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之族早后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。

baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具

操作方式如下:

1、java -jar AXMLPrinter2.jar
D:\play\AndroidManifest.xml > AndroidManifest.txt

2、java -jar AXMLPrinter2.jar
D:\play\res\layout\main.xml > main.txt

3、java -jar baksmali-1.2.5.jar -o classout/
d:\play\classes.dex

baksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是郑弯能看懂,比如以下片段:

view plain to clipboardprint?
.class
Lcom/paul/test/a;
.super Landroid/view/View;

# static fields

.field private static final a:Landroid/graphics/Typeface;

#
instance fields
.field private b:I
.field private c:I
.field
private d:Z
.field private e:J
.field private f:I
.field
private l:[Ljava/lang/String;

# direct methods
.method static
constructor <clinit>()V
.registers 2
sget-object v0,
Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;

const/4 v1, 0x0
invoke-static {v0, v1},
Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;

move-result-object v0
sput-object v0,
Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;
return-void

.end method
#
# other methods ..........
#
# virtual
methods
.method public onKeyUp(ILandroid/view/KeyEvent;)Z

.registers 4
const/16 v0, 0x42
if-eq p1, v0, :cond_8

const/16 v0, 0x17
if-ne p1, v0, :cond_b
:cond_8

invoke-direct {p0}, Lcom/paul/test/a;->d()V
:cond_b

const/4 v0, 0x0
invoke-virtual {p0, v0},
Lcom/paul/test/a;->setPressed(Z)V
invoke-super {p0, p1, p2},
Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
move-result
v0
return v0
.end method
.class Lcom/paul/test/a;
.super
Landroid/view/View;

# static fields
.field private static final
a:Landroid/graphics/Typeface;

# instance fields
.field private b:I
.field
private c:I
.field private d:Z
.field private e:J
.field private
f:I
.field private l:[Ljava/lang/String;

# direct methods
.method static constructor
<clinit>()V
.registers 2
sget-object v0,
Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;

const/4 v1, 0x0
invoke-static {v0, v1},
Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;

move-result-object v0
sput-object v0,
Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;
return-void
.end
method
#
# other methods ..........
#
# virtual methods
.method
public onKeyUp(ILandroid/view/KeyEvent;)Z
.registers 4
const/16
v0, 0x42
if-eq p1, v0, :cond_8
const/16 v0, 0x17
if-ne p1,
v0, :cond_b
:cond_8
invoke-direct {p0},
Lcom/paul/test/a;->d()V
:cond_b
const/4 v0, 0x0

invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)V

invoke-super {p0, p1, p2},
Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
move-result
v0
return v0
.end method

认真一看,就知道:

# static fields 定义静态变量的标记

# instance fields 定义实例变量的标记

# direct methods 定义静态方法的标记

# virtual methods 定义非静态方法的标记

以onKeyUp方法为例,其中定义了处理逻辑,if-eq p1, v0, :cond_8
表示如果p1和v0相等,则执行cond_8的流程:

:cond_8
invoke-direct {p0},
Lcom/paul/test/a;->d()V

调用com.paul.test.a的d()方法

不相等: if-ne p1, v0, :cond_b 则执行cond_b的流程:

:cond_b
const/4 v0, 0x0

invoke-virtual {p0, v0},
Lcom/paul/test/a;->setPressed(Z)V

invoke-super {p0, p1, p2},
Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z

move-result v0

大概意思就是调用com.paul.test.a的setPressed方法,然后再调用父类View的onKeyUp方法

最后 return v0

该方法,能把外部引用的lib包类也解析出来,能开到包的全貌。缺点在于,解析出的smali文件并不是反编译出的java文件,可读性降低了,但仔细研究也能看出大概。

Ⅳ android开发手机钱包如何保证安全

手机钱包牵涉到三块安全的地方:1、交互安全,也就是弊梁在和服务器通信过程中的交互安全:这方面要考虑验证机制,以及数据加密2、数据存储安全,使用手机钱包固然有的数据是需要保存到本地的,保存到本地数据如何安全袭租存储是值得考虑的问题3、代码安全,牵涉到钱的问题上代码方面一定不能出现问题,还有就死要考虑到代码被反拍卜兆编译修改其中的数据等因素,我目前想到的也就只有这些,希望对你有帮助!

Ⅳ 反编译什么意思,具体该怎么用

反编译:高级语言源程序经过编译变成可执行文件,反编译就是逆过程。计算机软件逆向工程,又称计算机软件恢复工程,是指对其他软件的目标程序(如可执行程序)进行“逆向分析和研究”,从而推导出设计思想、原理、结构、算法、处理过程、操作方法等要素,等被其他软件产品使用,在某些特定情况下可能会衍生出源代码。反编译可以作为开发软件时的参考,也可以直接用于软件产品中。

(5)反编译钱包开发扩展阅读:

如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动纠正错误,这些工作由错误处理程序完成。需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程序的逻辑。

Ⅵ 怎么吧app反编译成可开发的源码

作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar
作用:将apk反编译成Java源码(classes.dex转化成jar文件)
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件

Ⅶ 北大青鸟设计培训:java中的编译与反编译

一、什么是编译1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分颤银镇析;语义检查和中间代码生成;代码优化;目标代码生成。
主要是进行词法分析和语法分析,又称为源程序分析,分析搏穗过程中发现有语法错误,给出提示信息。
二、什么是反编译计算机软件反向工程(Reverseengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。
反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
三、Java类的编译与反编译我们在最初学习Java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译Java类的,就是将我们写好的helloworld.java文件编译成helloworld.class文件。
class文茄粗件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。
通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。
而Javaclass文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。
那么反编译呢,就是通过helloworld.class文件得到java文件(或者说是程序员能看懂的Java文件)四、什么时候会用到反编译1、我们只有一个类的class文件,但是我们又看不懂Java的class文件,那么航天桥java培训http://www.kmbdqn.cn/认为可以把它反编译成我们可以看得懂的文件。
2、学习Java过程中,JDK的每个版本都会加入越来越多的语法糖,有些时候我们想知道Java一些实现细节,我们可以借助反编译。

Ⅷ 请问什么是反编译,原理是怎么样的

反编译
高级语言源程序经过
编译
变成可执行文件,反编译就是逆
过程

但是通常不能把可执行文件变成高级语言
源代码
,只能转换成
编程

计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人
软件
的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的
软件产品
所使用的
思路

原理

结构

算法
、处理过程、运行方法等设计
要素
,作为自己开发软件时的参考,或者直接用于自己的软件产品中。

Ⅸ android程序如何讲反编译出来的文件进行二次开发

关于反编译的问题,首先你要确定作者是否铅携启用了混淆机制,还有在以前很老的版本的时拿槐候还是可以完全反编译出来的,现在只能反编译大部分,其中的关键的部分或者对象,她也是乱码机制的,也就是说你需要一定的功底去看懂。如何反编译你直接搜索下吧槐敏伏,大量的工具盒方法,谢谢!请采纳!

阅读全文

与反编译钱包开发相关的资料

热点内容
怎么查以前电影的场次 浏览:465
穿越古代猎艳 浏览:805
python语言参考手册 浏览:824
买药上门app哪个靠谱 浏览:901
电影鬼片大全免费观看 浏览:259
三个外国妹子上山碰到三个鬼电影 浏览:139
铁雨3迅雷下载 在线播放 浏览:68
python库文件下载 浏览:131
兔老大电影 浏览:210
单片机实验键盘和数码 浏览:546
免费投屏电影网 浏览:880
甘肃酒泉发票服务器地址 浏览:357
程序员专用诗集 浏览:209
微信租车系统源码 浏览:984
中国抗日狙击手电影 浏览:420
千王之王2000百度网盘资源 浏览:515
phpsocketepoll 浏览:726
小孩和熊的电影 浏览:241
python写网页界面的框架 浏览:6