安卓app开发框架搭建(安卓程序框架)

网站建设 2441
本篇文章给大家谈谈安卓app开发框架搭建,以及安卓程序框架对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 原生安卓开发app的框架frida安装和Python小试牛刀 本教程只用于学习探讨,不允许任何人使用技术进行违法操作,阅读教程即表示同意! frida是一个hook原生 安卓开发app 的一个框架,也不止安卓,像ios和win等,都支持,但是好像看到用的不太多。

本篇文章给大家谈谈安卓app开发框架搭建,以及安卓程序框架对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

原生安卓开发app的框架frida安装和Python小试牛刀

本教程只用于学习探讨,不允许任何人使用技术进行违法操作,阅读教程即表示同意!

frida是一个hook原生 安卓开发app 的一个框架,也不止安卓,像ios和win等,都支持,但是好像看到用的不太多。

注意,是原生,就是用Java+安卓开发的app。

还有些是H5之类的,这些是hook不成的,当然,市面上最起码80%的app都是原生开发,不必担心。

再说,H5开发的不是更容易破解?懂的都懂!

hook英文是钩子的意思,可以理解为一堆水管流水,我在某个水管中间挖一个洞,操作一波再继续流。

当然,我也可以只看看某个水管有没有水。

上述这个过程就叫做修改和验证!

可以使用编写的简单Python环境管理器快速创建一个虚拟环境,可视化就是好,再也不用记该死的命令了!

相关链接:

这里已经创建完毕,虚拟环境名为 frida_env

当然,这是一个差不多的参考价值,不一定准,具体情况具体分析。

在安装frida时,尽量科学上网,因为frida好像会下载一些东西,不科学上网非常慢...可能会卡住很长时间!

根据我的环境,这是我的依赖包,在虚拟环境中pip安装即可!

安装完成之后,分别执行 frida --version 和导入 frida ,如果没有报错则表示安装成功!

frida-server下载链接:

综上所述,我pip的frida版本为14.2.18,手机是arm64,所以要下载这个!

确实存在,ok。

这样就已经运行起来了,他是不会有提示的,是直接wait在这的!

注意啊,这个cmd窗口是不能关的,一直挂这就行!

激活上述创建好的虚拟环境,执行以下命令。

如果出现以下信息,表示正确!这是手机的一些信息,表示能获取到。

到这,pc端的frida和手机端的frida-server就建立成功了,主要流程就是

如果frida版本=12,好像是要进行端口转发的

pc上配置frida没什么好说的了,创建一个虚拟环境,安装frida就好了。

手机上的话,第一次需要把frida-server拷贝到 /data/local/tmp 下和 chmod

然后运行这个frida-server,命令总结一下大概为:

下次使用直接复制就可以了!

因为frida使用的是js语言,并且需要安装一个代码自动提示插件,所以WebStorm最合适,官网下载点击下一步下一步即可。

这里不做叙述。

嗯,还需要安装node,自己折腾吧!

创建一个空项目,选择合适的目录。

打开项目,点击下面的Terminal,输入 npm i @types/frida-gum 安装frida代码自动提示。

这不,关于frida的代码就能自动提示了!

题外话

通过Charles+postern进行抓包,发现登录用的接口为

可以发现带的数据是一个 {"Encrypt":"xxx"} ,擦,这是什么玩意啊???

这个apk是没有加固的,通过反编译搜索一下 user/login 试试!!!

找到了两处 user/login ,其中一个是login函数!

那么,现在问题来了,到底 user/login 走的是不是login?如何验证?

此时点击手机上面的登录按钮,然后看pc上控制台的输出!

确实输出了,经过验证,确实是执行了这个login。

然后你再进行一遍hook和分析即可。

下节课就来分析如何自动登录这个app!

想要玩转hook,大概分为以下几步

人生没有白走的路,加油!

App-快速搭建项目框架-基本架构

一、 目前移动端项目的主流App框架基本都是标签式的,通过TabBar + NavigationController框架进行搭建完成。TabBar + NavigationController就是在应该TabBar上添加itemBar,每一个itemBar都是一个独立的模块,并且每一个itemBar都对应一个NavigationController。因为每一个itemBar的导航器都不一样,所以应该是先有TabBar 再有NavigationController。

二、

怎样搭建一个android开发框架

相对于传统计算机程序语言来说,Android开发学习资源上还稍微欠缺一些,对于一些基础应用讲解还稍显匮乏,本篇所讲述的Android培训内容可以帮助大家更好的理解Android项目快速开发框架。结合之前所用的ormlite和hessian,再加上SAE已经支持JAVA,把服务端切换到JAVA,也就有了本文。使用hessian来做数据传输,ormlite来实现客户端与服务端的数据存储,极大的减少了CRUD工作。本文为探索贴,未正式用于大型项目,欢迎大家讨论使用!正文一、简介1.1 ormliteOrmlite[Object Relational Mapping Lite (ORM Lite)]对象关系映射精简版(精简版的ORM)提供了一些简单的,轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销的功能。支持数据库的jdbc调用,当然,最重要的肯定是它支持android原生的数据库api调用sqlite。——转载自这里。1.2 hessian使用方法参照本博两篇文章:[hessdroid]Android下使用Hessian与Java服务端通讯[hessdroid]Android下使用Hessian与Java服务端通讯的传值测试1.3 Android快速开发框架说明考虑如下几个特点:a). 客户端(Android)和服务端均使用Java语言b). 客户端(Android)和服务端均支持Hessian和ormlite框架c). 完整的支持面向对象开发:存储和交互传输二、准备2.1 开发环境为了便于同时开发Android和Java Web,这里下载的是Eclipse IDE for Java EE Developers版本,然后安装最新的ADT插件和TOMCAT插件。2.2 服务端应用服务器使用Tomcat,采用Java(JSP/Servlet)来实现服务端的业务逻辑,数据库使用Mysql。快速框架搭建推荐大家使用XAMPP(集成Apache、MySQL、PHP等,支持绿色安装)。2.3 客户端普通的Android环境2.4 通信与存储说明服务端与客户端通过Hessian进行数据交换,通过Ormlite保存数据库(通过JDBC保存到服务端的MYSQL数据库,也可以直接保存到客户端的sqlite数据库);三、代码3.1 项目工程截图(服务端)HOLib共用于客户端和服务端,保证接口和数据对象一致性。3.2 重点代码分析3.2.1 服务端web.xml?xml version="1.0" encoding="ISO-8859-1"?web-app xmlns="" xmlns:xsi="" xsi:schemaLocation=" web-app_2_4.xsd" version="2.4" servlet servlet-nameuser/servlet-name servlet-classcom.nmbb.ho.server.servlet.UserServlet/servlet-class /servlet servlet-mapping servlet-nameuser/servlet-name url-pattern/user.do/url-pattern /servlet-mapping listener listener-classcom.nmbb.ho.server.StartupInit/listener-class /listener/web-appStartupInit.javapublic class StartupInit implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent arg0) { try { TableUtils.dropTable(OrmliteHelper.getConnection(), POUser.class, true); //创建数据库 TableUtils.createTable(OrmliteHelper.getConnection(), POUser.class); } catch (SQLException e) { e.printStackTrace(); } } @Override public void contextDestroyed(ServletContextEvent arg0) { }} 代码说明:StartupInit可用于创建数据库表结构,这里用于测试,真实环境注意数据丢失问题。POUser.java@DatabaseTable(tableName = "nmbb_users")public class POUser implements Serializable { /** 用户编号,6位数字 */ @DatabaseField(generatedId = true) public int suid; /** 用户名 */ @DatabaseField(width = 30) public String username; /** 密码 */ @DatabaseField(width = 30) public String password; /** 昵称 */ @DatabaseField(width = 60) public String nickname; /** 200 正常 201 数据校验错误 202用户已经存在 */ public int status = 200; /** 用于放错误信息 */ public String msg; public POUser() { }} 代码说明:注意需要一个空的构造函数,其他请参考ormlite资料。UserServlet.java/*** 用户Servlet** @author 农民伯伯* @see **/public class UserServlet extends HessianServlet implements IUserService { @Override public POUser register(String username, String password) { POUser result = new POUser(); System.out.println("[UserServlet.register]..."); // 检测数据是否合法 if (isEmpty(username) || isEmpty(password)) { result.status = 201; result.msg = "用户名或密码不能为空"; } else { // 检测用户是否存在 OrmliteHelperPOUser db = new OrmliteHelperPOUser(); if (db.exist(POUser.class, "username", username)) { result.status = 202; result.msg = "用户名已经存在"; } else { result.username = username; result.password = password; db.create(result);// 入库 result.msg = "注册成功"; System.out.println("create user suid:" + result.suid); } } return result; } @Override public ListPOUser query(int suid, int startIndex, int pageSize) { return new OrmliteHelperPOUser().query(POUser.class, "suid", suid, startIndex, pageSize) ; } /** * 判断字符串是否为空 * * @param str * @return */ public static boolean isEmpty(String str) { return str == null || str.length() == 0; }}3.2.2 客户端(Android) public class UserActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void OnClickRegiger(View view) { new AsyncTaskVoid, Void, POUser() { @Override protected POUser doInBackground(Void... params) { String url = ""; HessianProxyFactory factory = new HessianProxyFactory(); try { factory.setDebug(true); factory.setReadTimeout(5000); //不设置会报 expected hessian reply at 0x48 factory.setHessian2Reply(false); IUserService basic = (IUserService) factory.create(IUserService.class, url, getClassLoader()); return basic.register("admin", "123456"); } catch (MalformedURLException e) { Log.e("UserActivity", "OnClickRegiger", e); } catch (Exception e) { Log.e("UserActivity", "OnClickRegiger", e); } return null; } @Override protected void onPostExecute(POUser result) { if (result != null) { if (result.status == 200) { //保存入库 new DbHelperPOUser().create(result); } Toast.makeText(UserActivity.this, "" + result.msg, Toast.LENGTH_LONG).show(); } }; }.execute(); }}代码说明:1、DbHelper在源码里给出。2、如果项目无法编译通过,请注意设置项目的字符编码、JDK版本、Android的版本。三、总结5.1 优点a). 完全面向对象开发b). 降低项目的复杂度,减少引入其他框架所带来的复杂性c). 非常适合一个开发服务端和客户端充分的利用的框架的特点,提交开发效率,适合中小型项目快速开发。5.2 缺点a). 注意服务端与客户端共用id的问题5.3 其他a). ormlite支持标准的JPA助记符,这里。这样服务端采用Hibernate应该也是可以的,有时间可以做一个整合例子看看。学习语言同做事情一样,想通其中的关系,就会事半功倍,对语言要深入的理解,

关于安卓app开发框架搭建和安卓程序框架的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码