使用红米K50的无线调试
使用红米K50手机与电脑,进行无线调试
需要连接到同一个局域网内
手机端需要开启开发者模式、无线调试与配对
开发者模式开启开发者模式方法为
打开“设置”,点击“我的设备”,点击“全部参数与信息”,点击“MIUI版本”五次,
就可以开启“开发者模式”,
可以在“设置”,点击“更多设置”,下滑,就可以找到“开发者选项”
无线调试进入“开发者选项”,
下滑到“调试”菜单栏,点击进入“无线调试”,
开启“无线调试”
配对选择使用配对码进行配对,
点击“使用配对码配对设备”,等待电脑端进行配对
电脑端配对在进行无线调试之前,需要将电脑与手机进行配对
使用adb的指令为:
1adb pair IP:PORT
连接配对之后,正式开启调试之前,需要将adb与手机进行无线连接,其实就是一种tcpip连接
指令为:
1adb connect IP:PORT
开始调试在adb进行连接之后,就可以使用常规的adb指令进行无线调试
断开连接在调试结束之后,
能够使用adb指令断开连接,具体指令为
1adb disconnect
初始binder
binder作用可以用于跨进程通信
个人理解binder可以对应理解路由模型
binder中主要关注三个对象,路由器、服务器、客户端
首先binder会在android中启动,并占据“ip”为0的地址
然后服务器端在binder中注册自身信息,尤其是接口函数与地址
最后客户端访问binder,查询到服务器端的地址,调用接口并传递参数
注意!!!这篇文章只是个人理解,感觉有误,只是为了记录,谨慎谨慎。
初识JCA
理解JCA是利用provider对java.security.xxx的扩展
并不会取代现有的包,
而是通过put添加新的类
在新的类中具体实现操作
参考[1] https://blog.csdn.net/u012741741/article/details/79209984
临摹-龙珠孙悟空
我知道并不像,画着玩,快乐就完了
查看判断APK文件的签名信息
根据APK安装包,可以查看所使用的签名信息。
判断使用了哪些签名能够使用指令
1apksigner.bat verify -v xxx.apk
如图:
由上图可以看出,该apk仅使用了V2签名方案签名。
(PS. apksigner.bat通常所在路径为Sdk\build-tools\xx.x.x\)
apksigner.bat脚本,可替换为
1java -jar apksigner.jar
其中apksigner.jar所在路径为Sdk\build-tools\xx.x.x\lib
一个简单的通过META-INF/.SF文件区分apk是V1还是V2签名的方法如下:
如果.SF文件抬头包含X-Android-APK-Signed: 2,则表明该apk是V1和V2混合签名;
如果.SF文件抬头不包含X-Android-APK-Signed: 2,则表明该apk是纯V1签名;
如果连.SF文件都没有,则表明该apk是纯V2签名;
查看V1签名方式的签名信息V1签名是一种JAR方式签名,特点之一便是apk包中包含,META-INF\XXX.RSA,或者.SF文件
针对使用 ...
使用getSupportFragmentManager()
由于是参考复制别人的代码,因此踩了几个坑,之后要注意。
所使用的函数Fragment的使用有两个包支持
首先是app包
所扩展的类为Activity,获取FragmentManager的函数为getFragmentManager()
对应代码为
12345678910public class MainActivity extends Activity {public onCreate(Bundle savedInstanceState) {super.onCreate(saveInstanceState);setContentView(R.layout.main_activity);getFragmentManager().beginTransaction().replace(R.id.container, new Fragment()).commitNow();}}
而在v-4包中,
所扩展的类为AppCompateActivity,获取FragmentManager的函数为getSupportFragmentManager()
对应代码为
...
C++中数组地址指针是常量
最近在编程C++是遇到一个warming,内容为:数组地址 == NULL,恒为假我蛮疑惑的,因为我理解中,一个地址指向NULL是很平常的事情。
C++的中NULL在C语言与C++中,对于NULL,其实是不同的,
1234567#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif#endif
可以看出来,C语言中,NULL是指向地址0,而在C++中,NULL指向数字0所以,我们常常在释放指针变量之后,将其赋予NULL,
1234int *a = (int)malloc(sizeof(int));*a = 5;free(a);a = NULL;
其本质就是该指针指向地址0。
C++的数组C++的数据,本质就是在一个整体内存空间存储一定数据的数据结构;而与之对应的链表,是在随机分散的内存空间存储数据的数据结构。而其数据名,就是指向该数组的头指针。
1234int a[5] = {0};i ...
git commit --amend 存在版本回退动作
使用到git commit –amend
经过以下命令:
123git pullgit add .git commit --amend
在暂存区中,存在上一次提交的修改代码,于我所期望不同
所以查询了解git commit –amend的具体细节
gitgit是一个免费开源的分布式版本控制系统,被设计用于快捷高效地处理从小到大的项目。[1]
能够应用于代码仓管理,例如github、gitlib、gitea等等。
git commitgit commit——记录对于存储库的更改
创建一个新的提交,其中包含对当前内容的索引和给予描述更改内容的日志消息。[2]
git commit –amend通过创建一个新的提交来替换当前分支的tip(感觉可以翻译成提交对象,commit object)。
并且当未指定其他tip时,使用原始提交的备注信息作为起点。
可以粗暴的等效为:
123git reset --soft HEAD</sup>... do something else to come up with the right tree ...git commit -c ORIG_ ...
记录第一次逆向破解
本文记录第一次使用x64dbg破解Sublime Text 4,具体流程是按照吾爱破解的文章[1]进行。
由于是参考文章的复现,因此,本文记录简单一些,如果希望了解具体过程,可以参考原文。
找到重要标志文本安装Sublime Text 4,或者下载解压便携版程序,到已经路径下。
选中应用程序sublime_text.exe,右键,点击“用x64dbg调试”。
点击菜单栏的运行,使程序运行。
在关于中,可以看到字符串“Unregistered”,以此作为标志文本。
找到关键地址在反汇编区域中,右键,搜索字符串“Unregistered”。
选中,右键,点击“在反汇编中转到”。
可以在上文,找到关键字符串“Unregistered”,以及在上面部分位置可以看到字符串“Registered to”,根据之前学习的汇编代码可知,需要改变此前的跳转,而本文可以看到,关键跳转为
12cmp byte ptr ds:[rsi+5],0je sublime_text.7FF6D7D558D1
以上汇编的代码意为,比较寄存器中rsi的第六位与0是否相等,若相等则跳转,反之则不跳转。
若只是想修 ...
汇编入门log(三)
学习汇编的第三天记录