1、安卓逆向之第一个程序创建

参考资料:

1、15PB安卓学习资料

2、《教我兄弟学Android逆向01 编写第一个Android程序》

1、Android程序创建详解

1、打开Android Studio界面如下

2、选择对应的Activity

 3、填写包名、类名、路径名(默认即可)

 4、Android项目生成的文件介绍

5、清单文件介绍

清单:AndroidManifest.xml

功能:四大组件和权限外,还有一个重要的东西,就是程序的入口

在入口类执行之前,其实还会执行一个类的代码就是 Application 类中的代码 Application 类的 attachBaseContext 是一个 app 最早执行的函数代码。其次是这个类的和 onCreate 函数。之后才是 Activity。

6、布局文件介绍

2、创建一个CrackMe程序

我们打算创建一个CrackMe程序逻辑大致如下:输入正确的账号和密码点击确定则提示成功、否则失败

 我们需要控件如下:

两个TextView分别是:账号、密码

两个Plain Test分别是:账号、密码的输入框

一个Button确认按钮

 然后编写对应的逻辑代码

packagecom.crackme.myapplication;

importandroidx.appcompat.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

publicclassMainActivityextendsAppCompatActivity{

EditTextName;//定义PlainTest控件第一个输入框的名字

EditTextPass;//定义PlainTest控件第二个输入框的名字

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Name=(EditText)findViewById(R.id.Name_editText);//通过findViewById找到输入框控件对应的id并给它起一个名字

Pass=(EditText)findViewById(R.id.Password_editText);//通过findViewById找到输入框控件对应的id并给它起一个名字

ButtonLogin=(Button)findViewById(R.id.onOk);//通过findViewById找到按钮控件对应的id并给它起一个名字

Login.setOnClickListener(newView.OnClickListener(){//监听有没有点击按钮控件如果点击了就会执行onClick函数

@Override

publicvoidonClick(Viewview){

check(Name.getText().toString().trim(),Pass.getText().toString().trim());//调用check函数

}

});

}

publicvoidcheck(Stringname,Stringpass)//自定义函数check这里用来检查用户名和密码是否是hfdcxy1234

{

if(name.equals("pediy")&&pass.equals("1234"))

{

Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();//弹框

}

else

Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();//弹框

}

}

3、解析一个CrackMe程序

APK文件其实是压缩包格式,可以用各种解压缩文件打开。核心就是分析classes.dex文件

 直接使用集成工具AndroidKiller反汇编整个apk

 浅谈我们的切入点:

1、我们可以从activity_main.xml资源文件和strings.xml字符串文件入手

源码对照

 查询这些敏感ID的全局引用,例如:2131165304我们全局查找

 发现这ID对应的是按钮,其他以此类推

2、入口地址从onCreate开始看

核心部分是check函数,只要让if成立即可,也就是说即使我们输入不对的账号和密码也提示成功

我们切换回smali汇编修改

方法1:直接注释if-eqz v0, :cond_0两条汇编代码,使其永远成立

 现在if判断注释掉了,无论输入什么都提示成功

 方法2:将if-eqz v0, :cond_0命令修改成if-nez 使其逻辑取反,不成立则提示成功。

 只要输入非正确密码都提示成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值