- 博客(110)
- 资源 (2)
- 收藏
- 关注
原创 在windows上安装objection
如果函数存在重载,如果不指定方法签名,会hook住所有签名的方法,此时,假定getThumbsCount()有一个重载函数getThumbsCount(int index),此时只想hook getThumbsCount(int index),那么命令如下。结果你会发现打印出几千条,这几千条都是系统的类,如果需要观察指定包中的类,可按如下命令查询。显示已经hook成功,但实际操作时,并无反应,暂不清楚什么情况。当被hook的方法执行后,frida可以观察到,如下。可以发现,若方法没有参数,则不会显示。
2024-07-04 20:38:22
978
原创 Frida案例-hook app中指定类的方法
进程不一定会以包名显示,还可能会以app的名字显示,当前我的app名字就是“测试”frida -U 测试 -l test.js。以下代码文件命名为:test.js。
2024-07-04 12:14:12
191
原创 windows上安装Frida环境
1.要和python中安装的frida版本一致,所以frida-server也要选择16.3.3。使用adb 进入shell,然后将frida-server移动到/data/local/tmp。将下载的frida-server放到雷电模拟器与windows的共享目录内。在雷电模拟器的如下路径可看到刚复制过去frida-server。使用frida --version 查看frida版本。到此,frida-server已经安装成功,此时需要重启雷电模拟器。将frida-server文件的权限更改为777。
2024-07-04 00:33:31
1162
原创 逆向开发环境准备
综上所述,ODEX和OAT在Android系统中扮演着不同的角色,它们之间的区别主要体现在定义与用途、生成与存储以及文件格式与性能等方面。2.在values/strings.xml中搜索相应的字符串,找到后将其替换。1.确定AndroidManifest.xml中名字对应的字符串叫什么。1.用adb判断目标app启动时,开屏广告界面所对应的Activity名称。killer内置的文本搜索工具不好用,对于名称和icon的更改,可自动化。有三种虚拟机,分别为:java虚拟机,dalvik虚拟机,art虚拟机。
2024-06-30 20:22:45
724
原创 1.2 Java程序的基本结构
在Java中,一个程序经常由多个类组成,每个类通常被保存在一个独立的文件中。那么,Java程序文件应该如何组织呢?一般来说,Java程序的文件结构如下:1. 源代码文件:Java程序的源代码通常保存在以.java为扩展名的文件中,其中每个文件对应一个类,文件名必须与类名相同。例如,一个名为Hello.java的文件中,应该只包含一个名为Hello的类。2. 编译后的字节码文件:在编译Java程序后,会生成以.class为扩展名的字节码文件,这些文件保存在与源代码文件相同的目录下。
2023-04-21 21:04:32
1444
原创 1.1 Java语言的概述
Java是一种跨平台的编程语言,它最初由美国计算机科学家James Gosling和他的团队在1990年代初期开发出来的。Java的开发初衷是用于家电控制,但很快就发现它有更广泛的应用前景,于是Sun Microsystems公司在1995年正式发布了Java。Java语言的设计初衷是克服其他编程语言的一些限制,比如C++、C#等,让程序员更加轻松地开发跨平台的应用程序。所谓跨平台,就是指程序可以编写一次,然后在不同的操作系统和计算机平台上运行,例如在Windows、Linux、Mac等操作系统上运行。
2023-04-21 20:54:07
629
原创 1 java简介
Java是一种计算机编程语言,可以用它来编写所有种类的应用程序,包括桌面应用程序、移动应用程序、Web应用程序等等。Java还拥有跨平台的特性,这意味着您可以在多种操作系统和设备上运行Java应用程序。
2023-04-21 20:20:43
717
原创 Android常见UI以及功能代码集成-持续更新中
最近写的程序比较多,为了能够快速开发,我打算将Android中常见的UI,以及功能代码集成到一个库里,后续我也将持续的维护这个库,同时,我也将该库分享到互联网上,和大家共同学习进步。AndroidoAssitLib 地址如下https://gitee.com/cxyhq2020/android-assit-lib由于AndroidAssitLib中不可避免的会用到一些网络请求,这些请求的服务器代码,我也公开,各位可以下载该源码,然后直接运行即可https://gitee.com/cxyhq2
2021-03-11 11:27:22
385
原创 Vue-h5+css3+vue实现图书管理案例
本案例采用idea进行开发先创建一个空项目h5+css3实现的静态页面效果h5+css3代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .grid { margin: auto;
2020-07-30 13:52:23
718
原创 java后端-强哥带你写旅游网-05BaseServlet的增加
建立BaseServlet当前项目的是一个功能就会对应到一个Servelt,若继续这样做,随着功能的增多,就会产生很多的Servlet,让无疑就会产生很多的重复代码,作为软件开发人员,我不应该让项目里有太多重复性的东西,因此决定抽出来一个基类,来减少Sevlet的创建。具体如何做呢?请看如下BaseServlet的代码public class BaseServlet extends HttpServlet { @Override protected void service
2020-07-25 21:57:52
201
原创 java后端-强哥带你写旅游网-04登录退出功能的实现
登录实现的逻辑前端代码实现给登录按钮添加id btn_subjs处理登录逻辑<script> $(function () { //1.给登录按钮绑定单击事件 $("#btn_sub").click(function () { //2.发送ajax请求,提交表单数据 $.post("loginServlet",$("#loginForm").ser...
2020-07-25 12:51:23
912
原创 java后端-强哥带你写旅游网-03注册功能的后端实现以及对新用户进行邮箱注册激活
指定数据的提交地址当点击注册时,注册的数据,提交到哪里,可以在ajax中指定,如下此处我是提交到registUserServlet,现在服务端还未创建registUserServlet,那么接下来就开始创建获取前端提交的数据注册的流程是拿到前端提交的数据,然后插入到数据库里,我可以通过request.getParameterMap();获取,如下//1.获取数据Map<String, String[]> map = request.getParameterMap()
2020-07-25 11:23:46
695
原创 java后端-强哥带你写旅游网-02创建后端数据库和编写前端校验
创建java后端数据库创建数据库,并命名为travelCREATE DATABASE travel此处我以sqlyog来进行创建,如下使用数据库USE travel;在travel创建本次项目所要使用到的表我在项目中的travel.sql已提供建表语句,将其内容复制到sqlyog中执行即可执行后,若0 Error就说明建表成功如下是travel中的表java后端完成注册功能的编写以下是实现注册功能,要完成的所有细节流程,如果你看不懂,没关系,可
2020-07-24 11:47:30
520
原创 java后端-强哥带你写旅游网-01环境的配置和初始化
本次项目所有使用的资源,如代码,资料,软件,均可到下方进行下载链接:https://pan.baidu.com/s/1y8mC3MjCBHRpO1FPsRu5EA提取码:1021先预览本次项目的前端效果本次项目使用的开发软件idea 2018.3idea 2018.3的下载,安装,与破解本次项目将采用Maven进行构建Maven版本3.5Maven的安装以及环境变量配置以上idea2018,Maven3.5 准备好后,下面开始进入项目开发设置Maven...
2020-07-24 00:33:08
218
原创 Android的属性动画(二)加载框圆点旋转收缩放大缩小效果的实现
案例效果图如下,案例实现步骤1.首先用drawCircle()画好6个圆点 private void drawCircles(Canvas canvas) { //每个小圆之间的间隔角度 = 2π/小圆的个数 float rotationAngle = (float) (2*Math.PI/mCircleColors.length); Log.i("barry","length------:"+mCircleColors.length)
2020-07-08 14:13:19
2269
1
原创 Android的属性动画(一)
Android3.0引入属性动画在最初时,Android里,只有帧动画和补间动画,做一些基本的操作倒也足够用了,但是帧动画和补间动画有一个缺点,就是假如给一个View设置了点击事件,当这个View执行了补间动画后,它的最后展现位置,是无法触发点击事件,点击事件还是在View的动画前的位置。在Android3.0之后,引入了属性动画,你可以把属性动画看做是之前版本动画的一个拓展。也就是之前的动画能实现的功能,属性动画同样可以完成。像之前View绑定点击事件后,通过动画改变View的位置后,点击事件无法触发
2020-07-07 16:00:24
181
原创 idea创建一个web项目
选择New选择创建类型指定项目名创建好的项目如下添加jsp,servlet的jar包添加成功后,如下图Web应用需要靠Tomcat运行,因此需要绑定Tomcat,下方出现add Configuration 说明还未绑定Tomcat去绑定Tomcat服务器点击add Configuration先让服务器去关联本项目配置服务器的参数信息以上配置完毕,web应用就和Tomcat绑定成功了。访问web应用中的资源
2020-07-05 19:11:51
300
原创 强哥带你零基础学java-05 java中的类
public class Hello { public static void main(String[] arr){ System.out.print("跟着强哥学习编程"); } }什么是类类是中文的叫法,英文叫做class,它具体张什么样子呢?,如下就是一个类类就是如上图那样,它代表的是一个整体,像public , class ,Hello 等这些关键字都是类的组成元素public 是代表权限,它的作用,我暂时还没法给..
2020-07-03 21:41:15
165
原创 强哥带你零基础学java-04java虚拟机
public class Hello { public static void main(String[] arr){ System.out.print("跟着强哥学习编程"); } }这是上一篇博客的例子,本章,将对此例的细节进行讲解。上面的例子是一个很简单的java程序,它想要被运行,首先要被编译,编译的目的是将java源代码转化为CPU能识别的二进制指令。想要编译java源代码,需要用javac.exe,在cmd中,通过javac .
2020-07-02 17:56:26
180
原创 强哥带你零基础学java-03运行第一个java程序
java是什么,java是一种编程语言的名字,在生活中,我们知道的有汉语,英语。运用汉语语法,我们可以写一篇文章。同样的道理,用java的语法,我们就可以写程序了。那么现在的问题是,要如何来写呢?现在就跟我来做,我们来写一个java程序。首先来创建一个空白的文件依次操作,鼠标右键 ,弹出一个框后,选择新建,然后再点击里面的文本文档.我们在写字的时候,需要有一个媒介来书写,写程序也是一样的道理,也需要一个媒介,在计算机里,这个媒介就是文件。将文件重新改一个名字,改为hello.jav.
2020-06-29 22:25:23
245
原创 强哥带你零基础学java-02先整体后细节
在正式学习java之前,应该先对程序要有一个整体的认识,有了最基本的认知之后,再继续学习后续的内容,将会变得更轻松,愉快。当你点击电脑的开机键之后,计算机都做了些什么?先看如下图现在来对上图中的流程进行讲解什么是CPUcpu是电脑中最核心的一个部件,它的作用就是执行我们写的指令。比如我写一个让CPU停止工作的指令,CPU执行之后,就会进入休眠状态,对于CPU的认知,各位只需要记住一点,它就是用来执行指令的。什么是ROMROM是read only memory的缩写,中文含义是
2020-06-26 22:26:55
284
原创 强哥带你零基础学java-01认识基础的重要性
如果你从未接触过编程,从未了解过软件行业,那么可以关注我的系列文章,我将以初学者的角度,尽可能的将每个知识点讲解细致,让你更容易理解。8年前,我只会用电脑聊个QQ,在网上看视频,打字也不利索。那个时候的软件开发还是一个很神秘的行业,经常在电视上看到他们西装革履的在宽敞明亮的办公室里,一脸专注的敲着代码。那时候的我还是比较羡慕的,于是开始对软件产生了兴趣。兴冲冲的去新华书店买了一本《一站式学习C编程》,拿回去翻了几页,就看不下去了。因为当时的我没有任何编程基础,也从未接触过编程,连程序编译和运行的概念
2020-06-23 10:29:34
190
原创 ButterKnife 错误集合
1. Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList使用butterknife:10.0.0开发时,遇到以上错误,此错误引起原因:我在BaseActivity中进行了Bind但在MainActivity extends BaseActivity 中,并未使用BindView
2020-06-03 14:06:53
273
原创 The color “baseBlac in values has no declaration in the base values folder this can lead to crash
在module lib中定义了如下资源然后就报了这个错误"The color “baseBlac” in values has no declaration in the base values folder; this can lead to crash导致我无法通过R.color.baseBlack引用解决办法此时,你会发现可以通过R.color.baseBlack引用了但有个小问题,就是colors文件失去了代码高亮的效果,但并不影响运行,只能将就下了。...
2020-06-03 11:39:33
9288
1
原创 x86汇编从实模式到保护模式-带你轻松入门编程-让CPU执行我们写的汇编指令02
上一篇x86汇编从实模式到保护模式-带你轻松入门编程-彻底理解程序的本质01在上一篇,我们写了下面2条汇编指令mov ax ,1add ax , 2由于汇编指令,CPU无法执行,所以我们用汇编编译器将汇编指令转化成了CPU指令.打开test.binCPU指令在test.bin文件里。我们可以打开test.bin,看下里面的内容。如果你用普通的软件打开test.bin,你会看到如下的内容显示的是一串乱码,想要正确的打开这个文件,需要通过特殊的软件查看器。我这里提供了一个
2020-06-01 22:36:32
335
1
原创 x86汇编从实模式到保护模式-带你轻松入门编程-彻底理解程序的本质01
首先感谢李忠老师的《x86汇编从实模式到保护模式》,这本书让我彻底了解了程序是如何被一步一步的执行的。在我知道这些原理细节之后,继续学习其他高级编程语言时,比如C,C++,java,很轻松的就理解了这些高级编程语言中的概念。在实际运用的时候如鱼得水。因掌握了原理,因此写的每一部分代码,都心中有数,内心舒坦。现在我就将我的感悟分享给各位,愿大家学有所成。什么是CPU?CPU的全称是Central Processing Unit 中央处理单元,它本质就是一块集成电路,我们将这样的集成电路,也叫做芯片
2020-06-01 21:17:45
676
原创 汇编编写软件和编译器的集成
这是汇编编写软件,下载下来直接就可以使用这是汇编编译器,下载下来,解压缩即可集成编译器打开nasmide.exe,点击编译环境设置在解压缩的nasm-2.14rc16-win64.zip中找到nasm.exe即可
2020-06-01 21:16:41
819
原创 汇编语言学习02-裸机上执行8086程序
下面的汇编代码是一个程序加载器,类似于一个最简易的操作系统,它负责加载另一个用户程序,需要注意的是,这个这个汇编要位于主扇区。 ;代码清单8-1 ;文件名:c08_mbr.asm ;文件说明:硬盘主引导扇区代码(加载程序) ;创建日期:2011-5-5 18:17 app_lba_start equ 100 ;声明常数(用户程序起始逻辑扇区号)
2020-05-25 17:43:14
587
1
原创 汇编语言学习01-virtualbox安装虚拟机
本章工具链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA提取码:5ndl直接创建一台无任何操作系统的虚拟机此处选择我提供的vhd格式的虚拟硬盘创建好后,显示如下
2020-05-23 23:53:48
405
原创 gradle flag contained ARMEABI, ARM64_V8A not targeted by this project.的解决方案
ABIs [arm64-v8a,armeabi-v7a,armeabi] set by 'android.injected.build.abi' gradle flag contained 'ARMEABI, ARM64_V8A' not targeted by this project.你使用NDK时,出现了上面的这个错误,运行项目时,会发现apk中,没有生成相应的动态库。上面报错和AndroidStudio版本有一定关系,有一种简单的解决方案,就是不管上面的错误,只要我们在build.gradle中,
2020-05-20 00:15:43
2427
原创 AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中
在AndroidStudio上新建一个项目我的AndroidStudio是3.6的,可能你们的创建过程和我的不一样,但我建议更新到3.6,AndroidStudio3.6开发NDK特别高效.直接点击Finish如果你们出现和我下面一样的错误这里说的是没有指定NDK的根目录,在你已经下载ndk的情况下,你可以点击project struct ->在如下选择ndk的路径如果你没有下载过ndk,那么你可以根据我下方博客进行搭建Android JNI学习01-A
2020-05-17 13:14:42
312
原创 AndroidStudio3.6 在Cmake 中使用MESSAGE()进行调试时,没有发现输出内容的解决办法。
在CmakeLists.txt中,用Message打印日志,结果什么都不显示于是,就跑到Android开发者官网,看有什么线索没,结果发现Cmake有如下版本。于是我去看了下build.gradle中,当前Cmake配置的版本是3.10.2看到这里,我突然间想到,会不会是Cmake版本配置过高,导致MESSAGE的输出内容,无法显示,于是我改成了3.6.0重新构建项目,发现MESSAGE信息终于输出了,还真是版本上的问题,确实有点坑....
2020-05-17 01:44:08
2636
原创 AndroidStudio3.6 用ffmpeg开发音视频01 带领初学者一步一步在ubuntu上开始编译ffmpeg
链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA提取码:5ndl没有Ubuntu的朋友,可以看我下篇博客进行搭建VMware 搭建 Ubuntu 教程为什么需要编译ffmpeg?ffmpeg是用C语言写的,我们想要使用在JNI中引用ffmpeg提供的函数,那么首先就需要将ffmpeg的源代码编译成静态库或者是动态库,这样在JNI中,我们就可以以静态库或动态库的方式去加载ffmpeg中的函数。为什么需要NDK?ffmpeg虽然是C.
2020-05-15 15:21:14
244
原创 Android JNI学习10-AndroidStudio3.6 在JNI中创建JNI线程,并且实现在JNI线程中调用java层的方法
来模拟一个小功能,在JNI中,创建一个线程,用于下载文件,当文件下载成功之后,通知java层的方法进行更新。开始实践吧首先在MainActivity中创建native方法downloadThread编写downloadThread对应的实现函数extern "C"JNIEXPORT void JNICALLJava_com_example_jnistudy_MainActivity_downloadThread(JNIEnv *env, jobject thiz) { }
2020-05-11 20:05:32
431
原创 Android JNI学习09-AndroidStudio3.6 在JNI中动态注册java层的方法
链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA提取码:5ndl在了解动态注册之前,先来看下静态注册,如下在你编写java的native方法后,立即根据相应规则编写对应的native实现函数,这种native实现方式叫做静态注册,即在编译期间,就确定了对应关系。还有一种就是在运行期间,才确定java的native方法和native实现函数的对应,这种对应方式就叫做动态注册。现在就用代码来演示这个动态注册的过程。先在MainAct.
2020-05-11 16:55:40
260
原创 Android JNI学习08-AndroidStudio3.6 在JNI中创建java的实体类
链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA提取码:5ndl先创建实体类Beanpublic class Bean { public String info; public Bean(String info){ this.info = info; } public void jniCall(){ System.out.println(info); }}创建.
2020-05-11 14:14:42
280
原创 Android JNI学习07-AndroidStudio3.6 JNI函数调用java层实体类get,set 和 静态方法,以及获取和修改成员属性
本篇将实现的功能:通过JNI函数调用java层实体类的get,set 和 静态方法,以及成员属性先创建一个实体类public class User { public String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public
2020-05-11 11:31:20
573
原创 Android JNI学习06-AndroidStudio3.6 JNI函数更新java层的数组
链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA提取码:5ndl本篇以下篇的代码为例,实现在JNI函数里更新java层的数组,没有看过下篇的朋友,可以先去看下。Android JNI学习04-AndroidStudio3.6 java 向 C++函数传递数组在MainActivity中调用sendIntArrayToJNIsendIntArrayToJNI对应的JNI函数内容如下extern "C"JNIEXPORT j.
2020-05-10 00:40:13
340
1
原创 Android JNI学习05-AndroidStudio3.6 java 向 JNI函数传递字符串数组
链接:https://pan.baidu.com/s/1zB9r5WwuTMIPNMlYl5HlvA提取码:5ndl来实现一个功能java将字符串数组传递给JNI函数,在JNI函数将获取到的数组用日志输出首先在MainActivity中,添加如下代码创建对应的JNI函数extern "C"JNIEXPORT jstring JNICALLJava_com_example_jnistudy_MainActivity_sendStringArrayToJNI(JNIEnv .
2020-05-09 16:58:54
1042
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人