`

Android DEX反编译后部分代码解析

阅读更多

一个private 方法

private String createBadgeCode()


 .method private createBadgeCode()Ljava/lang/String;
// Date now = New Date();
new-instance v2,java/util/Date
invoke-direct {v2},java/util/Date/ ; ()V

// SimpleDateFormat dateFormat = new SimpleDateFormat(”yyMMddhhmm”);
new-instance v5,java/text/SimpleDateFormat
const-string v7,”yyMMddhhmm”
invoke-direct {v5,v7},java/text/SimpleDateFormat/ ; (Ljava/lang/String;)V

// StringBuilder raw = new StringBuilder();
new-instance v7,java/lang/StringBuilder
invoke-direct {v7},java/lang/StringBuilder/ ; ()V

// raw.append(dateFormat.format(now));
invoke-virtual {v5,v2},java/text/SimpleDateFormat/format ; format(Ljava/util/Date;)Ljava/lang/String;
move-result-object v8
invoke-virtual {v7,v8},java/lang/StringBuilder/append ; append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7

// raw.append(difficulty);
iget v8,v12,tx/games/atd_world.difficulty I
invoke-virtual {v7,v8},java/lang/StringBuilder/append ; append(I)Ljava/lang/StringBuilder;
move-result-object v7

// raw.append(”tensaix2j”);
const-string v8,”tensaix2j”
invoke-virtual {v7,v8},java/lang/StringBuilder/append ; append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7

// Bytes[] rawbytes = raw.toString.getBytes;
invoke-virtual {v7},java/lang/StringBuilder/toString ; toString()Ljava/lang/String;
move-result-object v4
invoke-virtual {v4},java/lang/String/getBytes ; getBytes()[B
move-result-object v0

/* Below code refined;
int sum = 0;

for(int i = 0; i < rawbytes.length(); i++)
sum += rawbytes[i];
*/

const/4 v6,0
const/4 v3,0
l3c1e:
// length = rawbytes.length();
array-length v7

// if( v3 > v7 ) goto: l3c30
if-ge v3,v7,l3c30

// v7 = rawbytes(v0);
aget-byte v7,v0,v3

// v6 += v7;
add-int/2addr v6,v7

// v3 ++;
add-int/lit8 v3,v3,1
goto l3c1e

l3c30:

// StringBuilder badge = new StringBuilder();
new-instance v7,java/lang/StringBuilder
invoke-direct {v7},java/lang/StringBuilder/ ; ()V

// v8 = Math.random();
invoke-static {},java/lang/Math/random ; random()D
nop
move-result-wide v8

// v10 = 4652007308841189376;
const-wide v10,4652007308841189376 ; 0×408f400000000000

// v8 = Math.round(v8*v10);
mul-double/2addr v8,v10

// I thought it only took one variable??
invoke-static {v8,v9},java/lang/Math/round ; round(D)J
move-result-wide v8

// v10 = 1000
const-wide/16 v10,1000

// v8 += v10;
add-long/2addr v8,v10

// badge.append(v8);
invoke-virtual {v7,v8,v9},java/lang/StringBuilder/append ; append(J)Ljava/lang/StringBuilder;
move-result-object v7

// badge.append(dateFormat.format(now));
invoke-virtual {v5,v2},java/text/SimpleDateFormat/format ; format(Ljava/util/Date;)Ljava/lang/String;
move-result-object v8
invoke-virtual {v7,v8},java/lang/StringBuilder/append ; append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7

// badge.append(difficulty);
iget v8,v12,tx/games/atd_world.difficulty I
invoke-virtual {v7,v8},java/lang/StringBuilder/append ; append(I)Ljava/lang/StringBuilder;
move-result-object v7

// badge.append(sum);
invoke-virtual {v7,v6},java/lang/StringBuilder/append ; append(I)Ljava/lang/StringBuilder;
move-result-object v7

// return badge.toString();
invoke-virtual {v7},java/lang/StringBuilder/toString ; toString()Ljava/lang/String;
move-result-object v1
return-object v1
.end method

An example of the output of this function is; 1310090403121501473

Broken down the output looks like this;

1310090403121501473, (round(random * const)+1000

1310090403121501473, Date in yyMMddhhmm format.

1310090403121501473, “0″ Difficulty, Noob = 0, Normal = 1, Pro = 3

1310090403121501473, sum of bytes (date + difficulty + “tensaix2″)

 

 

分享到:
评论

相关推荐

    android反编译工具集合以及攻略全新

    总结反编译主要的目的在于学习。利用反编译进行相关的汉化或...3.而class到java的方式要更多样化一些,因为只是查看反编译后的代码:jd-gui(推荐),Jodeclipse(Jode的Eclipse插件),JadClipse(Jad的Eclipse插件)

    apk 反编译

    apk反编译分两部分:1.资源文件 2.源代码 1.资源文件反编译 工具:apktool-install-windows-2.1_r01-1 步骤:1) 使用命令进入apktool-install-windows-2.1_r01-1目录下,可以看到一个apktool.bat文件 2) 输入 ...

    安卓反编译工具(apktool、dex2jar、jd-gui、auto-sign、jadx)

    dex2jar :将classes.dex文件,反编译出源码(如果apk未加固),反编译出文件,使用jd-gui工具进行查看 jd-gui:打开jar包中的文件,转成java代码 jadx:解析apk、dex、jar等 Auto-Sign:自动签名工具,将重新打包的...

    jadx-v1.4.7.zip

    此资源为基于jadx源码v1.4.7的构建版本,使用命令`./bin/jadx-gui`,即可打开jadx-gui 窗口,选择APK路径即可...jadx-gui 功能:使用突出显示的语法查看反编译代码、跳转到声明、查找用法、全文搜索、smali 调试器等。

    dex2jar-2.1.rar

    dex2jar Nightly build 的2.1最新版, 部分旧版解析语法有错之类的,新版得到修正。当然有些代码被混淆解析困难老问题是没完全解决。

    最新版 GDA3.89.exe

    软件无需安装java环境和android环境就可以使用,支持分析apk,dex,odex,oat类型文件, 工具不依赖于任何第三方工具库(adb除外), 所有功能采用C++编写而成,作者独立完成了该工具所有代码的编写,其中包含反编译...

    GDA分析工具

    软件无需安装java环境和android环境就可以使用,支持分析apk,dex,odex,oat类型文件, 工具不依赖于任何第三方工具库(adb除外), 所有功能采用C++编写而成,作者独立完成了该工具所有代码的编写,其中包含反编译...

    GDA3.55_APK文件分析工具

    1.独立于java和android sdk,无需安装java和...还算友好的smali阅读界面,支持反编译伪代码(F5),伪代码(字符串、方法)交叉引用(X),支持可疑行为扫描,支持系统API查看等等。 11. ……更强大的功能等待你去发现。

    【推荐】超全的移动安全自学资料精编合集(43份).zip

    Android安全应用逆向: 反编译classes.dex文件 Android安全应用逆向: 使用Apktool解包并打包 Android安全应用逆向: 使用IDA静态分析so文件 Android安全应用逆向: 动态调试Smali源码 Android安全应用逆向: 使用IDA动态...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    13.4.1 使用dex2jar和jd-gui反编译apk 470 13.4.2 使用apktool对apk进行二次打包 470 第14章 JNI和NDK编程 473 14.1 JNI的开发流程 474 14.2 NDK的开发流程 478 14.3 JNI的数据类型和类型签名 484 14.4 JNI...

    移动安全系列教学下载共43份.zip

    Android安全应用逆向--23--反编译classes.dex文件.pdf Android安全应用逆向--24--使用Apktool解包并打包.pdf Android安全应用逆向--25--使用IDA静态分析so文件.pdf Android安全应用逆向--26--动态调试Smali源码.pdf ...

    android开发艺术探索高清完整版PDF

    / 463 13.4 反编译初步 / 469 13.4.1 使用dex2jar和jd—gui反编译apk / 470 13.4.2 使用apktool对apk进行二次打包 / 470 第14章 JNI和NDK编程 / 473 14.1 JNI的开发流程 / 474 14.2 NDK的开发流程 / 478 14.3...

    Android开发艺术探索

     13.4.1 使用dex2jar和jd-gui反编译apk / 470  13.4.2 使用apktool对apk进行二次打包 / 470  第14章 JNI和NDK编程 / 473  14.1 JNI的开发流程 / 474  14.2 NDK的开发流程 / 478  14.3 JNI的数据类型和类型签名...

    java断点续传源码解析-Android_Analysis:Android_Analysis

    "使用dex2jar反编译的文件类名" 无需进入应用程序即可运行活动 1.查看AndroidManifest.xml中的activity -&gt; 搜索AccessCoontrolActivity 启动 adb shell 2.am //活动经理3.am start -a "activity_name" //eg.jakhar....

    GDAE4.10_by_CXV.exe

    GDA(Generic Dex Analizer)是一款用于分析Android应用程序的工具,主要用于解析和反编译Android应用的DEX文件。它可以帮助安全研究人员、逆向工程师和安全测试人员分析应用程序的内部结构、提取代码和资源,以便...

    GDA4.10.exe

    GDA(Generic Dex Analizer)是一款用于分析Android应用程序的工具,主要用于解析和反编译Android应用的DEX文件。它可以帮助安全研究人员、逆向工程师和安全测试人员分析应用程序的内部结构、提取代码和资源,以便...

    GDAE4.10.exe

    GDA(Generic Dex Analizer)是一款用于分析Android应用程序的工具,主要用于解析和反编译Android应用的DEX文件。它可以帮助安全研究人员、逆向工程师和安全测试人员分析应用程序的内部结构、提取代码和资源,以便...

    BatchApkTool375.7z

    此外,您还可以连接插件、查看Apk、Jar和Dex源代码、通过ADB使用设备等。 工作准备: 解压档案。在实用程序路径和正在处理的文件名中,避免长路径、特殊字符(感叹号!,利息、马车等)和俄语字母。 1.脱氧: ...

Global site tag (gtag.js) - Google Analytics