android做法 安卓程序制作
转载
参考资料:
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这里用来检查用户名和密码是否是hfdcxy和1234
{
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 使其逻辑取反,不成立则提示成功。
只要输入非正确密码都提示成功
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。