首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
软件添加id功能按钮
760 阅读
2
v2ray节点搭建
727 阅读
3
typecho非常有特色的模块
548 阅读
4
QQxml消息卡片生成源码
502 阅读
5
网易云音乐歌单ID获取教程
472 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
flutter
springboot
安卓
rust
linux
vue
docker
joe
快捷键
git
fish shell
maven
redis
netty
dart
groovy
js
设计模式
rpc
尽意
累计撰写
101
篇文章
累计收到
39
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
85
篇与
的结果
2021-08-20
Smali语法:Registers(寄存器)
介绍对于dalviks字节码寄存器都是32位的,它能够表示任何类型,2个寄存器用于表示64位的类型(Long and Double)。一个方法中指定的寄存器个在一个方法(method)中有两中方式指定有多少个可用的寄存器。指令.registers指令指定了在这个方法中有多少个可用的寄存器,指令.locals指明了在这个方法中非参(non-parameter)寄存器的数量。然而寄存器的总数也包括保存方法参数的寄存器。参数是如何传递的?当一个方法被调用时,该方法的参数被保存在最后N个寄存器中。如果一个方法有2个参数和5个寄存器(V0-V4),参数将被保存在最后的2个寄存器内V3和V4.非静态方法的第一个参数,总是被方法调用的对象。例如,你写了一个非静态方法LMyObject;->callMe(II)V。这个方法有2个int参数,但在这两个整型参数前面还有一个隐藏的参数LMyObject;所以这个方法总共有3个参数。比如说,在方法中指定有5个寄存器(V0-V4),只用.register指令指定5个,或者使用.locals指令指定2个(2个local寄存器+3个参数寄存器)。该方法被调用的时候,调用方法的对象(即this引用)会保存在V2中,第一个参数在V3中,第二个参数在v4中。除了不包含this隐藏参数,对于静态方法都是相同的。寄存器名称有两种寄存器的命名方式,对于参数寄存器有普通的V命名方式和P命名方式。在方法(method)中第一个参数寄存器,是使用P方式命名的第一个寄存器,让我们回到前面的例子中,有三个参数和5个寄存器,下面的这个表显示了对每个寄存器的普通V命名方式,后面是P方式命名的参数寄存器。v0 the first local registerv1 the second local registerv2 p0 the first parameter registerv3 p1 the second parameter registerv4 p2 the third parameter registerYou can reference parameter registers by either name - it makes no difference.你可以使用名称引用参数寄存器,他们没有区别。引入参数寄存器的目的P命名方式被引入去解决,在编辑smail代码时候共同的烦恼。假设你有一个方法(mehtod),这个方法带有一些参数,并且你需要添加一些代码到这个方法中,这时发现需要一些额外的寄存器,你会想“没有什么大不了的。我只需要使用.registers指令添加寄存器数量就可以了。”不幸的是没有想象的那么容易,请记住,方法中方法的参数被保存在最后的寄存器里。如果你增加了寄存器的数量,达到让寄存器中的参数被传入的目的。所以你不得不使用.registers指令重新分配参数寄存器的编号。但如果在方法中P命名方式,被用来引用参数寄存器。你将很容易的在方法中去修改寄存器数量,而不用去担心现有寄存器的编号。注意:在默认的baksmali中,参数寄存器将使用P命名方式,如果出于某种原因你要禁用P命名方式,而要强制使用V命名方式,应当使用-p/--no-parameter-registers选项。Long/Double values正如前面提到的,long和double类型都是64位,需要2个寄存器。当你引用参数的时候一定要记住,例如:你有一个非静态方法LMyObject;->MyMethod(IJZ)V,LMyObject方法的参数为int、long、bool。所以这个方法的所有参数需要5个寄存器。p0 thisp1 Ip2, p3 Jp4 Z另外当你调用方法后,你必须在寄存器列表,调用指令中指明,两个寄存器保存了double-wide宽度的参数。来自:https://code.google.com/p/smali/wiki/Registers
2021年08月20日
139 阅读
0 评论
1 点赞
2021-08-04
网站右下角添加HTTPS/SSL国际安全认证公章
目前的网站都开始流行https加密协议了,开启ssl证书意味着你的网站更加的安全,这里分享一个教程,给你的网站右下角添加一个HTTPS/SSL国际安全认证公章显示,看上去更加的高大上。现在为自己的博客或站点开启HTTPS访问已经不是什么难事了,因为SSL证书获取已经不是奢侈的是,目前一般个人站点基本可以申请免费SSL证书来得到满足,如果嫌弃免费SSL证书也可自己花个几十上百块钱就能买一年左右的收费SSL证书。对于免费SSL证书,目前使用比较普遍的就是Let’s Encrypt,今年三月起已经证书开放了泛域名免费SSL证书申请。对于免费Let’s Encrypt证书如何申请,一般很多建站面板都支持一键部署,如宝塔Linux面板等。其实方法很简单,只需在你主题文件“footer.php”文件的最后面添加如下代码即可:<div id="cc-myssl-id" style="position: fixed;right: 0;bottom: 0;width: 65px;height: 65px;z-index: 99;"> <a href="https://myssl.com/www.suxii.top?from=mysslid" target="_blank" rel="nofollow noopener noreferrer"> <img src="https://static.myssl.com/res/images/myssl-id.png" target="_blank" rel="nofollow noopener noreferrer" alt="" style="width:100%;height:100%"> </a> </div>
2021年08月04日
157 阅读
2 评论
2 点赞
2021-06-04
软件添加id功能按钮
前言:这个项目是我在做手表启动器美化时产生的,因为启动器是和表盘一体的,在表盘页面点击一下就进入桌面了,我想加类似的防误触功能(添加一个按钮切换是否单击进入桌面,按钮加在了左滑页自己写的负一屏页面的最后一个微信图标上)而且还实现了双启动器(主要是不想用系统的启动器去,但是换成其他的启动器,表盘就没有了,而且锁屏键还失去了作用),表盘左右两部分点击进入不同的启动桌面,响应好的话,下期出教程≥﹏≤(下面是浏览图)言归正传,下面开启本期教程内容,用到了aide,mt管理器,我把教程分为AIDE篇和MT管理器篇所需工具:MT管理器AIDE汉化版aide篇:这里简单写了一个单击按钮(显示/隐藏)控件的项目做例子布局代码java代码public void b(View b) { Toast.makeText(this,"点击了控件",Toast.LENGTH_SHORT).show(); } public void a(View a) { Button bn=(Button)findViewById(R.id.bn); //bn.setVisibility(bn.GONE); if(bn.getVisibility()==bn.VISIBLE) { bn.setVisibility(bn.GONE); } else { bn.setVisibility(bn.VISIBLE); } } 简单分析一下,我们的思路是点击 按钮 实现切换控件(显示/隐藏)状态。在相对布局下, 按钮2 显示会覆盖住 按钮1 ,我们给 按钮1 添加一个点击事件(弹出提示文字), 按钮2 不作事件。当点击 按钮 使 按钮2 隐藏,再点下方区域,会出现提示文字,那么再次点击 按钮 切换 按钮2 显示,再点下方区域不会提示文字。代码完成,点击右上角的三角形按钮打包软件(不用安装,当然你也可以安装试试效果)aide篇结束MT管理器篇:这个软件是我在网上随便找的,就像图中这么简洁,只有一个背景图片和可以滚动的文字这里做出的修改是,在文本上再加一个按钮控件并同属一个相对布局,再用一个按钮控制其显示状态,覆盖掉文本,从而影响文本视图的正常使用。修改xml布局打开mt管理器,找到要修改的软件找到要修改的文件,反编译修改后保存添加id,及按钮功能事件点击文件resouces.arsc依次点击 包名-id-右上角添加-新建资源-长按添加的资源项-复制id点开文件classes.dex纠正一下,下面添加的一行的tv1改成name这段代码添加完就可以保存退出了还记得前面你用aide打包了一个软件吗,在这个目录(/storage/emulated/0/Android/data/com.aide.ui2/cache/apk/)找到它查看软件-打开dex文件-dex++编辑为了方便,我把a,b的代码直接贴了过来.method public b(Landroid/view/View;)V .registers 8 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/view/View;", ")V" } .end annotation .prologue .line 19 move-object v0, p0 move-object v1, p1 move-object v3, v0 const-string v4, "点击了控件" const/4 v5, 0x0 invoke-static {v3, v4, v5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v3 invoke-virtual {v3}, Landroid/widget/Toast;->show()V return-void .end method.method public a(Landroid/view/View;)V .registers 9 .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroid/view/View;", ")V" } .end annotation .prologue .line 23 move-object v0, p0 move-object v1, p1 move-object v5, v0 const/high16 v6, 0x7f070000 invoke-virtual {v5, v6}, Lcom/button/cc/MainActivity;->findViewById(I)Landroid/view/View; move-result-object v5 check-cast v5, Landroid/widget/Button; move-object v3, v5 .line 26 move-object v5, v3 invoke-virtual {v5}, Landroid/widget/Button;->getVisibility()I move-result v5 const/4 v6, 0x0 if-ne v5, v6, :cond_1b .line 28 move-object v5, v3 const/16 v6, 0x8 invoke-virtual {v5, v6}, Landroid/widget/Button;->setVisibility(I)V .line 32 :goto_1a return-void :cond_1b move-object v5, v3 const/4 v6, 0x0 invoke-virtual {v5, v6}, Landroid/widget/Button;->setVisibility(I)V goto :goto_1a .end method 将刚刚复制的a,b的代码粘贴到这里(AssetsDemoActivity)然后返回,复制这个再打开这个类文件修改完成后,就可以保存退出了然后我们点击安装包签名安装看一下效果跟预期的效果一样教程结束(^_^)我把测试用的软件上传过来了点击下载
2021年06月04日
760 阅读
7 评论
8 点赞
2021-01-28
淘宝大额优惠券
查券网站==>http://www.ziziquan.cn/(全网优惠券发源地)首单礼金==>http://www.e6kb.com/dh/index.htm(第一次记得看教程)
2021年01月28日
200 阅读
0 评论
1 点赞
2021-01-28
QQ扫码无法登录的解决方案
根据测试,目前QQ最新版本(8.4.10.4875)已经对 通过相册选取二维码识别进行登录 的操作做了相应限制。扫码后QQ会提示“无法识别的二维码”这一限制也导致大部分通过QQ扫码登录的软件都无法正常使用,目前的解决方案有两个1、使用TIM或者低版本QQ进行扫码登录2、使用两个设备,通过摄像头扫码功能
2021年01月28日
457 阅读
0 评论
1 点赞
1
...
15
16
17