走进apk逆向

admin 2020年11月17日18:16:27评论206 views字数 1934阅读6分26秒阅读模式

欢迎转发,请勿抄袭

        APK是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。APK 文件基于 ZIP 文件格式,它与JAR文件的构造方式相似。是使用java开发的。

        那么,我们学学如何逆向破解一个自己写的程序程序。使用Android studio 编写,核心代码:

public void logina(View v){    EditText userinfo = (EditText) findViewById(R.id.userinfo);    EditText passinfo= (EditText) findViewById(R.id.passinfo);    Random random = new Random();
if(userinfo.getText().toString().equals(random.nextInt()) && passinfo.getText().toString().equals(random.nextInt())){ TextView see = (TextView) findViewById(R.id.textView4); see.setText("欢迎管理员!"); }else { Toast.makeText(this,"密码错误!",Toast.LENGTH_SHORT).show(); }}

代码解读:按钮点击,触发logina,获取两个id分别为userinfo和passinfo的值,判断两个值是否与随机值一样匹配,匹配上了。标签显示欢迎管理员。否则密码错误!这是一个本地验证,与网络无关(捉包请看之前推文)。

编译好,先运行:

走进apk逆向

正常情况一般都是密码错误,除非运气好,能猜中。

        一般拿到手,只有一个apk文件,需要自己从apk里面获取jar文件,才能进行解读。步骤:

1、使用解压工具解压apk。得到classes等相关文件2、使用d2j-dex2jar,将dex文件转成jar     linux下执行d2j-dex2jar classes2.dex 得到classes2-dex2jar.jar文件      win下也有该工具,需要安装,用法一致,3、使用JD-GUI打开classes2-dex2jar.jar工具。

得到以下代码:

走进apk逆向


还原度很高了。基本逻辑思路已经呈现出来,根据代码分析,我们只要修改判断的条件。在if中有两次判断,因此需要修改两个判断条件。可以编写工具修改dex文件,再使用apktool等工具打包,签名。但是apktool极易报错,本教程使用了其他工具。

         NP管理器,它与MT管理器相似,是一个apk的程序。具体操作,选中查看

走进apk逆向

得到apk文件结构:

走进apk逆向

在这里显示有classes.dex和classes2.dex文件。点击classes2文件

走进apk逆向

找到MainActivity文件

走进apk逆向

点进去后看到smali语法的代码

走进apk逆向

点击右上角转成java也可以看apk的java代码

走进apk逆向

返回到smali文件,修改代码

走进apk逆向

两处判断条件,看不懂的话,请看下面语法:

"if-eq vA, vB, :cond_**"   如果vA等于vB则跳转到:cond_**"if-ne vA, vB, :cond_**"   如果vA不等于vB则跳转到:cond_**"if-lt vA, vB, :cond_**"    如果vA小于vB则跳转到:cond_**"if-ge vA, vB, :cond_**"   如果vA大于等于vB则跳转到:cond_**"if-gt vA, vB, :cond_**"   如果vA大于vB则跳转到:cond_**"if-le vA, vB, :cond_**"    如果vA小于等于vB则跳转到:cond_**"if-eqz vA, :cond_**"   如果vA等于0则跳转到:cond_**"if-nez vA, :cond_**"   如果vA不等于0则跳转到:cond_**"if-ltz vA, :cond_**"    如果vA小于0则跳转到:cond_**"if-gez vA, :cond_**"   如果vA大于等于0则跳转到:cond_**"if-gtz vA, :cond_**"   如果vA大于0则跳转到:cond_**"if-lez vA, :cond_**"    如果vA小于等于0则跳转到:cond_**


apk的代码,是if-eqz,判断是否等于0,进行执行后面的代码。将if-eqz改成if-nez。保存并编译并退出(返回的时候自动提示)

走进apk逆向

等待编译:

走进apk逆向

得到一个tmp的文件名,修改成apk,安装测试

走进apk逆向

apk已经显示管理员了。

涉及部分工具,公众号回复“apk逆向”获取下载

文章声明:该工具、教程仅供学习参考,请勿非法使用。否则与作者无关!

走进apk逆向


扫码关注我们

本文始发于微信公众号(yudays实验室):走进apk逆向

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年11月17日18:16:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   走进apk逆向http://cn-sec.com/archives/186691.html

发表评论

匿名网友 填写信息