国外android逆向的论坛,初探android逆向

国外android逆向的论坛,初探android逆向好久没有更新博客了。一直在想要更新点什么样子的干货。最近看了一点有关于逆向的文章,感觉还不错。对于“安卓开发没人要了”这种话,我也很无奈,最近的RN,包括kotlin的出现,还有Flutter框架的出现。这些东西的出现感觉都像是意味着,往后的移动端开发不需要双倍的人员了。最近突然对逆向萌生了一点点兴趣,关于逆向的东西依旧有很多,很多apk对进行加固,加壳等等,这里的入门仅仅是对于没有加密等操作的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

好久没有更新博客了。一直在想要更新点什么样子的干货。

最近看了一点有关于逆向的文章,感觉还不错。

对于“安卓开发没人要了”这种话,我也很无奈,最近的RN,包括kotlin的出现,还有Flutter框架的出现。 这些东西的出现感觉都像是意味着,往后的移动端开发不需要双倍的人员了。

最近突然对逆向萌生了一点点兴趣,关于逆向的东西依旧有很多,很多apk对进行加固,加壳等等,这里的入门仅仅是对于没有加密等操作的apk进行逆向,对初学者可以更快的知道流程,更快的入门。

70f61f16a08e

image.png

第一步:准备工具

1、下载android开发工具 android studio,百度即可。 建议去中文网或者官网下载

3、JD-GUI: 这个工具用于将jar文件转换成java代码 下载地址:http://jd.benow.ca/

4、APKTool: 本文重要工具,APK逆向工具,用于修改apk中的源代码 下载地址: http://ibotpeaches.github.io/Apktool/install/

第二步:准备apk

1、这里我们自己写一个测试的app,用于验证我们是否能看到其原来的代码。

上一下最简单的代码吧

70f61f16a08e

image.png

然后是java代码

public class MainActivity extends AppCompatActivity {

TextView textView;

Button button;

int var0 = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView = findViewById(R.id.main_tv);

button = findViewById(R.id.main_btn);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (var0 == 1) {

textView.setText(“我是被修改过的文字”);

} else {

textView.setText(“这个时候var0不等于1”);

}

}

});

}

}

看一下效果

点击前:

70f61f16a08e

image.png

点击后:

70f61f16a08e

image.png

然后,我们假设,这个app已经打包成了apk。(接下来,我们打包成apk)

第三步:反编译apk

我们知道,其实说白了,一个apk就是一个压缩包,只是他将很多东西进行了加密,转成了另一种格式。dex文件,交给底层去识别。

我们这一部分的工作就是要解密,然后要看到代码逻辑。

1、首先,我们将打包好的.apk文件改成.zip

2、然后进行解压

3、将我们解压后的文件里的 classes.dex文件放到 dex2jar中

70f61f16a08e

image.png

4、然后执行命令

sh d2j-dex2jar.sh classes.dex

(这里有可能会出现权限问题)

d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied

解决方案如下:

sudo chmod +x d2j_invoke.sh

密码要求是开机密码即可(mac)

5、在同一个目录下生成了一个jar文件

70f61f16a08e

image.png

然后用JD-GUI将它打开。

6、查看源代码,了解逻辑

70f61f16a08e

image.png

我们看到,源代码几乎是一丝不挂的展现到了我们眼前。

第四步:用apktoos修改源代码

1、我们将apk放到下载好的apktool的文件目录中,如图

70f61f16a08e

image.png

我们下载好之后会有两个文件,apktool.sh 和 apktool.jar,然后加上我们的apk现在一共有三个

2、执行命令

sh apktool.sh apktool d APK名字.apk

3、然后我们发现多了一个文件夹:

70f61f16a08e

image.png

我们点进去,找到smali目录

4、然后根据应用的包名找到相关目录

70f61f16a08e

![image.png](https://upload-images.jianshu.io/upload_images/5981775-2e4fba94ae587f09.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

5、找到相关的Activity的java文件,我们的app只有一个页面,我们知道是MainActivity,所以我们要打开 MainActivity$1.smali

6、并且根据我们的if判断语句全局搜索

我们找到了这一行

70f61f16a08e

image.png

这里稍微普及一下有关samli的语句:

条件关键字 意思

if-eq 如果等于

if-ne 如果不等于

if-lt 如果小于

if-le 如果小于等于

if-gt 如果大于

if-ge 如果大于等于

if-eqz 如果等于零

if-nez 如果不等于0

if-ltz 如果小于零

if-lez 如果小于等于零

if-gtz 如果大于零

if-gez 如果大于等于零

这里原本是ne,我修改成了eq。这句话的大概意思就是 如果这个变量不等于我的变量p1,就返回一个东西。

我们根据java语句的字面意思,将其修改为等于。

7、修改完成后记得要保存哦

8、重新打包,命令:

sh apktool.sh b 刚才生成文件夹的名字 -o 新的apk的名字.apk

我们生成如下:

70f61f16a08e

image.png

9、我们有了新的apk,但是去安装发现会出错。原因是我们需要重新签名。

对于签名文件,我们用AS生成一个即可。然后放到同一目录,执行以下命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名

10、最后得到apk,然后我们去运行

第五步:运行盗版apk

我们换用一个模拟器,来对比其前后的执行流程。

点击前:

70f61f16a08e

image.png

点击后:

70f61f16a08e

image.png

那么基本上就大功告成了。这个过程还是很繁琐的。

注:

1、这个仅仅是一个入门的简单教程,可能百度上已经烂大街了,但是入门确实很好。

2、很多市面上的apk都会进行加固|加壳。这一部分水很深,需要很多实战经验才能得出,这里我也在学习。

3、切勿用于非法用途。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234439.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab绘制二元函数图像z=1/(1-x^2)+y^2_python画二元二次函数图像

    matlab绘制二元函数图像z=1/(1-x^2)+y^2_python画二元二次函数图像MATLAB内置有强大的绘图功能,以下将以几个实例进行说明。绘制三维参数曲线t=-5:0.1:5;%设定参数范围theta=0:0.02*pi:2*pi;%注意如果有两个参数的话,它们的维数必须统一x=sqrt(1+t.^2).*cos(theta);%注意乘方和乘法的写法y=sqrt(1+t.^2).*sin(theta);z=2*t;%设定参数方程plot3(x,y,z,’-g’);%绘图,最后一个选项为颜色,绿色title(‘参数曲线’);%添加标题效果:可以拖动图片从不同

    2025年9月30日
    3
  • webstorm激活码2021年【注册码】

    webstorm激活码2021年【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    63
  • QTreeView 使用

    QTreeView 使用QTreeView结构介绍:树控件的标题QHeaderView,相关用法参考Qt文档。控件使用的model/view框架,QTreeView实现了QAbstractItemView里声明的相关接口,由QAbstractItemModel为控件提供显示数据。自定义数据,通过QStandardItemModel和QTreeView连用,用QStandardItem属性介绍:…

    2022年6月2日
    48
  • 路由器下一跳地址怎么判断_一篇文章,了解清楚路由器的各种组网「建议收藏」

    很多朋友问到,不同网段的两个电脑如何实现互访?这个通常在企业办公中会遇到,我们今天来看下。我们经常会遇到企业随着员工或部门的增多,增加了一个路由器,分了两个网段,A子网和B子网处于不同网段,当网络中存在多个路由器时,要求不同路由器下属的子网可以互相通讯,同时又可以通过宽带路由器上网,这如何实现?本期我们通过路由器的操作,来实现三种案例情况。案例情景1企业通过一台路由器R1上网,局域网LAN1,。因…

    2022年4月16日
    893
  • 基于JAVA+Servlet+JSP+MYSQL的图书销售管理系统

    基于JAVA+Servlet+JSP+MYSQL的图书销售管理系统项目功能:此网上书店系统具有以下基本功能:1.用户注册功能:进入网上书店的用户可以进行商品浏览,但不能进行购买,此时用户的身份为游客。如需购买图书,就要用到用户注册功能。需要输入用户名和密码进行注册。如果已注册的用户忘记密码,可以点击“找回密码”按钮。已注册用户也可以点击“注销”按钮进行用户信息注销。2.商品管理功能:商品管理功能即用户可以对网上书店的书籍进行搜索、查看、选购。在管理员方面,此功能还包括系统内图书的上新、下架管理。3.书店购物车功能:用户可以将心仪的图书加入到书店购物车中。在书店购物

    2022年5月18日
    45
  • Merge into的使用详解-你Merge了没有「建议收藏」

    Merge into的使用详解-你Merge了没有「建议收藏」Merge是一个非常有用的功能,类似于Mysql里的insertintoonduplicatekey. Oracle在9i引入了merge命令, 通过这个merge你能够在

    2022年7月4日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号