日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android逆向笔记-破解自己编写的Android应用程序(开发及破解)

發(fā)布時間:2025/3/15 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android逆向笔记-破解自己编写的Android应用程序(开发及破解) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這里開發(fā)使用的Android studio,使用的模擬器為:

Pixel 2 API 22也就是Android 5的系統(tǒng)。

這里演示下開發(fā)的程序:

這里模擬了下激活程序,用戶名是用戶自己輸入的,密碼是用戶名轉(zhuǎn)md5后所有奇數(shù)項。也就是說123456789的密碼為:323b453885f5181f的奇數(shù)項。

關(guān)鍵代碼如下:

package com.example.crakdemo1;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final EditText eidt_userName = (EditText)findViewById(R.id.userName);final EditText eidt_sn = (EditText)findViewById(R.id.password);Button btn_register = (Button)findViewById(R.id.button);btn_register.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if(!checkSN(eidt_userName.getText().toString().trim(), eidt_sn.getText().toString().trim())){Toast.makeText(MainActivity.this, R.string.unsuccessed, Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, R.string.successed, Toast.LENGTH_SHORT).show();}}});}public static String bytesToHex(byte[] bytes) {StringBuilder buf = new StringBuilder(bytes.length * 2);for(byte b : bytes) { // 使用String的format方法進行轉(zhuǎn)換buf.append(String.format("%02x", new Integer(b & 0xff)));}return buf.toString();}private boolean checkSN(String userName, String sn){try {if((userName == null) || (userName.length() == 0)){return false;}if((sn == null)){return false;}MessageDigest digest = MessageDigest.getInstance("MD5");digest.reset();digest.update(userName.getBytes());byte[] bytes = digest.digest();String hexStr = bytesToHex(bytes);StringBuffer sb = new StringBuffer();for(int i = 0; i < hexStr.length(); i+=2){sb.append(hexStr.charAt(i));}String userSN = sb.toString();if(!userSN.equalsIgnoreCase(sn)){return false;}}catch (NoSuchAlgorithmException e){e.printStackTrace();return false;}return true;} }

上面這個程序源碼打包下載地址:

https://github.com/fengfanchen/AndroidReverse/tree/master/CrakDemo1

?

?

先說一個工具:

ApkTool是跨平臺apk文件反編譯工具,生成smali格式的反匯編代碼。

下面是破解自己寫的程序,首先是要使用Android studio進行apk的生成:

在app下的build的outputs中apk中debug會有打包好的app,將這個拿到,然后新建文件夾,將其放進去:

運行命令:

apktool d ./app-debug.apk -o outdir

這里我使用了notepad++進行查找:

從中可以看到開發(fā)時候彈出的失敗對應(yīng)的英文名稱為unsuccessed,再繼續(xù)查這個!!

其中對應(yīng)的地址為:

0x7f0c001f,再繼續(xù)查這個!!

從上面的文件可以看到已經(jīng)定位到ManActivity$1.smali文件了。從中可以看到這樣的代碼:

當(dāng)個if-nez v0, : cond_0。

這里在cond_0中0x7f0c001e對應(yīng)的是成功,所以關(guān)鍵點就是這里了。if-nez為if-not-equal-zero則調(diào)到cond_0,所以將其改為if-eqz

下面是從新編譯APK并簽名

回編譯:

apktool b outdir

將其考到signapk文件夾中,進行簽名

上面這個signapk.jar.zip可以在Android系統(tǒng)中找,也可以在網(wǎng)上去下載。我是在網(wǎng)上下載的。配置好環(huán)境變量,開始重新簽名:

signapk app-debug.apk app.apk

使用adb進行安裝:

adb install app.apk

這樣再次進入就是破解版的了!!

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Android逆向笔记-破解自己编写的Android应用程序(开发及破解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。