生活随笔
收集整理的這篇文章主要介紹了
Android之反编译
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
反編譯
創(chuàng)建安卓項(xiàng)目,并編寫示例代碼,編譯打包
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingStart="15dp"android:paddingEnd="15dp"android:orientation="vertical"android:gravity="center"tools:context=".MainActivity"><EditTextandroid:hint="請(qǐng)輸入用戶名"android:id="@+id/et_username"android:layout_width="match_parent"android:layout_height="wrap_content" /><EditTextandroid:hint="請(qǐng)輸入密碼"android:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn_login"android:layout_marginTop="30dp"android:text="登錄"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>
package com.barray.helloandroid;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState
) {super.onCreate(savedInstanceState
);setContentView(R.layout
.activity_main
);EditText etUsername
= findViewById(R.id
.et_username
);EditText etPassword
= findViewById(R.id
.et_password
);Button btnLogin
= findViewById(R.id
.btn_login
);btnLogin
.setOnClickListener(view
-> {login(etUsername
,etPassword
);});}private void login(EditText etUsername
,EditText etPassword
){String username
= etUsername
.getText().toString().trim();String password
= etPassword
.getText().toString().trim();Toast.makeText(MainActivity.this,"登錄成功!!!\n用戶名:" + username
+ "\n密碼:" + password
, Toast.LENGTH_SHORT
).show();}
}
keytool
-genkeypair
-alias crazyit
-keyalg RSA
-validity
400 -keystore crazyit
.jks上面命令各選項(xiàng)說明如下:
-genkeypair:指定生成數(shù)字簽名;
-alias:指定生成數(shù)字簽名的別名;
-keyalg:指定生成數(shù)字簽名的算法。使用RSA算法。
-validity:指定生成數(shù)字簽名的有效期,單位天
-keystore:指定生成數(shù)字簽名的存儲(chǔ)路徑。
keytool
-list
-v
-keystore jks文件的路徑
-storepass 密碼
反編譯apk包
工具apktool下載
https://ibotpeaches.github.io/Apktool/install/
具體用法參照
https://ibotpeaches.github.io/Apktool/documentation/
java
-jar apktool_2
.6.0.jar d app
-release
.apk
java
-jar apktool_2
.6.0.jar b app
-release
-o unsign_new_app
.apk
jarsigner –verbose –keystore new_hello
.jks –signedjar new_app
.apk unsign_new_app
.apk new_hello
-verbose 輸出簽名詳細(xì)信息
-keystore 指定密鑰對(duì)的存儲(chǔ)路徑
-signedjar 后面三個(gè)參數(shù)分別是 簽名后的APK包 未簽名的APK包 和 密鑰對(duì)的別名
修改smali文件
把 登錄成功 修改成 我修改了登錄
const-string v1
, "\u767b\u5f55\u6210\u529f!!!\n\u7528\u6237\u540d\uff1a"
const-string v1
, "\u6211\u4fee\u6539\u4e86\u767b\u5f55\u000d\u000a!!!\n\u7528\u6237\u540d\uff1a"
將dex文件變成可讀jar文件
工具dex2jar下載
https://github.com/pxb1988/dex2jar
- 解壓dex2jar.zip
- 解壓需要反編譯的apk文件,將dex文件復(fù)制到dex2jar的解壓文件夾下
- 運(yùn)行
d2j
-dex2jar
.bat classes
.dex
dex2jar classes
.dex
-> .\classes
-dex2jar
.jar
打開jar文件
工具jadx-gui下載
https://github.com/skylot/jadx
反編譯后的代碼
public class MainActivity extends AppCompatActivity {private void login(EditText editText
, EditText editText2
) {String trim
= editText
.getText().toString().trim();String trim2
= editText2
.getText().toString().trim();Toast.makeText(this, "登錄成功!!!\n用戶名:" + trim
+ "\n密碼:" + trim2
, 0).show();}public void lambda$onCreate$
0$
MainActivity(EditText editText
, EditText editText2
, View view
) {login(editText
, editText2
);}@Override public void onCreate(Bundle bundle
) {super.onCreate(bundle
);setContentView(R.layout
.activity_main
);final EditText editText
= (EditText) findViewById(R.id
.et_username
);final EditText editText2
= (EditText) findViewById(R.id
.et_password
);((Button) findViewById(R.id
.btn_login
)).setOnClickListener(new View.OnClickListener() { @Override public final void onClick(View view
) {MainActivity.this.lambda$onCreate$
0$
MainActivity(editText
, editText2
, view
);}});}
}
反編譯之資源包
總結(jié)
以上是生活随笔為你收集整理的Android之反编译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。