- 博客(8)
- 收藏
- 关注
原创 hook某蛇大作战游戏
前言某蛇大作战是一款游戏,其中有多种类型的蛇可以选择,但需要充值购买,所以今天给大伙介绍通过hook之后,主动调用普通方法和静态方法两种方式,实现内购。测试app的购买功能进入app后可以看到有一个爱国者礼包和商店,可以购买想要的蛇的种类。这里以爱国者礼包为例,点进去购买,然后取消,会提示支付取消的字样。找到破解点首先将apk文件拖入到jadx中进行反编译。根据信息反馈法,搜索字符串“支付取消”。支付取消只在DX_Pay()方法中出现过。DX_Pay()方法代码如下:public s
2021-12-18 11:54:29 4211
原创 NDK开发之静态库
NDK开发之静态库静态库的由来 首先编写一个程序,程序中用到三个函数,分别为这三个函数创建三个源文件和一个头文件。 头文件命名为mou.h。void my_strcpy();void my_strcat(); 函数my_strcpy,文件命名为mou1.c。void my_strcpy() { puts("my_strcpy");}
2021-07-05 11:53:45 538
原创 编译运行第一个NDK程序
编译运行第一个NDK程序Ndk简介与下载 众所周知,Java程序的运行依赖于Java虚拟机,因为它不是直接执行机器码,相对于其他语言(汇编,C/C++)编写的程序运行速度慢。所以在Android开发中需要用到Ndk。 Android Ndk是一个工具集,可使用C/C++等语言以原生代码实现应用的各个部分。对于特定类型的应用,可以重复使用以这些语言编写的代码库。 在
2021-06-29 10:40:41 283
原创 全局变量和常量在内存中的分布
内存结构 内存中,有代码段,数据段,栈,堆。数据段分为已初始化和未初始化。 内存中属性很多,但作为程序员,只重点关注读(read),写(write),执行(execyte),共享(share),这四个属性。英语取开头字母,缩写为rwes。 代码段放程序的代码,属性是可读可执行。 数据段放全局数据,静态数据和常量。未初始化部分,属性是可读写。已初始化部分,分两部分,一部分属性是可读写,一部分属性是只读。 栈放参数,局部变量,保存的环境和返回地址,属性是可读写。 堆的属性是可读写。 这里的属性是
2021-01-02 17:05:35 1555
原创 数组作为函数参数
数组元素作为函数参数 做一道最常见的题目,问 ary[0] 和 ary[1] 的值是否进行交换?#include <stdio.h>#include <stdlib.h>void swap(int x, int y){ int nTmp = 0; nTmp = x; x = y; y = nTmp;}int main(){ int ary[2] = {7, 8}; swap(ary[0], ary[1]); printf("%08
2020-12-25 17:36:10 492
原创 二维数组和多维数组的本质及寻址方式
二维数组和多维数组的本质及寻址方式 二维数组和多维数组的本质还是一维数组,一维数组是一个特殊的一维数组。数组的数组就是多维数组,这个数组的元素不是基本数据类型,而是数组。 int ary[5],float ary[5],double ary[5],这种数组称为基本类型数组。整形可以当元素,通过类比,数组也可以当元素。 把一维数组作
2020-12-23 21:45:09 3805 1
原创 数组的定义和运算
一维数组的定义和使用一维数组的定义 c 语言所有的变量,函数必须先声明后使用,就好比日本动漫一样,在出招之前必须先吼一嗓子,“橡胶火箭炮”,“螺旋丸”,然后才能打出这个技能。 数组也不例外。一维数组的定义:类型标识符 数组名[元素个数],如 int a[5]。 方括号[],在不同的地方有不同的含义,在声明的时候表示数组的个数,在声明以外表示访问数组的元素,也叫下标运算。 数组的定义方式一:定义数组的同时,指定大小,并进行初始化。#include <stdio.h>#inc
2020-12-20 21:38:03 666
原创 深入理解递归
递归和循环的区别 递归和循环在设计思路上是有区别的,例如计算 1 - n 的累加,利用 for 循环来做。#include <stdio.h>#include <stdlib.h>int main(){ int n = 5; int i = 1; int nSum = 0; for (; i <= n; i++) { nSum = nSum + i; } system("pause");
2020-12-19 18:14:23 272 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人