Blog


腾讯云自媒体分享计划

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=wotgdo5wqshi




比特币要解决什么问题?

本系列文章标题为码农翻身的小密圈中圈主提出的问题,下面是我跟帖的回答

比特币解决了第三方发放信用货币时可能产生的问题。

首先,人民币是有价值的。为什么这些人民币纸币有价值呢?因为这是国家发行的,而国家说他是有价值,我们人民群众也认可国家。所以,人民币可以在我们之间交易,2元人民币可以买包方便面,10元可以买包巧克力。

然后我们思考一下,人民币会永远有这样的价值吗?不一定。什么情况下人民币会失去价值?亡国了!中央银行为了解决国库空虚,无限制地增发货币!这并不是不可能,世界上某些国家曾经,甚至正在上演这样的事情。人民币有价值,是国家向我们保证人民币是没问题的,你们可以放心使用。当发行[……]

Read more




给 Android ROM(AOSP)集成 SuperSU 的方法

本文实验配置:

ROM: AOSP Android-6.0.1_r77
设备:Nexus 5
SuperSU: SR5-SuperSU-v2.82-SR5-20171001224502.zip

SuperSU 官方下载链接:https://download.chainfire.eu/1220/SuperSU/

处理 SELinux

我们给 Android 编译 ROM 的时候,可以编译出带有 root 权限的版本。但是由于 Android 4.4 以上 SELinux 的存在,apk 还是无法获得 root 权限,这样很多 root app 都会提示无法获取 root,不能正常使用了。[……]

Read more




下载 Android source code(AOSP)遇到的一些问题及解决方法

最近在搞 apk 爆破工程,经常需要调试别人的 apk,每次手动修改 apk 的 debuggable 属性比较麻烦,而且要有时候还不成功。所以还是一劳永逸,下载 AOSP ,把 ro.debuggable 打开,编一个 Nexus 5 的镜像给我手机用。关于 apk 调试的参考链接:https://www.0xaa55.com/technews/201602/00000215.html

建议使用清华镜像,免翻墙。教程链接:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

下面是我在 windows 下,使用cygwin 下载官方 AOSP 时[……]

Read more




动态类型思维与静态类型思维

刚看到一句描述动态类型的话:“动态类型能够带来更高的灵活性——不需要接口或抽象类。”

这句话给我感觉是从一个动态类型语言(如Python)使用者的角度去说的,意思是我有了动态类型这种特性,我就不再需要先定好接口,然后实现类implement接口,才能调用指定的方法了。你只需要把对象给我,我直接调用,鸭子类型,非常方便。我“不需要”接口和抽象类。

而如果从一个Java使用者的角度去看动态类型,因为Java使用者总是习惯于使用接口和抽象类去约束代码,让代码在约定的框架内实现(我会很享受这种一切都在控制之中的感觉),所以面对动态类型时会有种失去“权力”的感觉:哎呀,如果这个类没有按照约定实现方法[……]

Read more




Android Studio让module library application并存的尝试

在做UAF的时候,我产生了一个需求:我希望我可以把demoUAF ClientUAF ASM分别打包成3个apk,又可以打包成1个apk。当分别打包的时候,UAF Client/UAF ASM是application;统一打包的时候,UAF Client/UAF ASM是library。我开始进行尝试。

方案1: 通过apply library 和 application plugin进行配置

初步想法

我希望在debug的时候,UAF Client/UAF ASM的build.gradle apply plugin: 'com.android.library',release的时候[……]

Read more




Android Studio Gradle中buildTypes + flavor(flavor group, flavor dimensions)组合依赖编译,添加buildTypes

最近在做UAF打包的事情,其中一个需求是根据debug/release和flavor来决定不同的依赖。比如debug情况下,我要打包带日志的,release情况下,我要打包带日志,不带日志,含其他module的,不含其他module的两两组合(也就是flavorDimensions)。现分享方法。

buildTypes + flavor(flavor group, flavor dimensions)组合依赖编译

参考build.gradle:

大家都用过简单的debugCompile, releaseCompile。如[……]

Read more




Android中Activity/Service获取调用者的信息(FIDO UAF Client获取调用者的信息)

实现UAF协议的时候,Client需要获取调用者的信息(获得其APK的签名)。用中文查了半天没查到获取Activity的方法,用英文一下就搜出来了(主要还是看英文累脑子)

Activity:

getCallingActivity()
getCallingPackage()

注意:
只有调用者使用的是startActivityForResult(),且Intent不设置NEW_TASK时才可以获取,调用startActivity()得到的是null。

Service:

Binder.getCallingUid()
Binder.getCallingPid()

注意:
当AIDL使用的[……]

Read more




Android/Java 混淆中使用-assumenosideeffects删除日志代码遇到的问题

今天发包给客户,发现混淆后的库时序有点问题。再三调试,发现锁失效了。wait()没有任何阻塞就跳过了。

ok,90%情况就是在哪里触发了notify/notifyAll咯。但找了很久,notify确实没有被调用。我就纳闷了。

最后我把我的库反编译出来看,发现我的锁的wait()语句被删了!源代码:EsLock.java

混淆后代码:
http://sickworm.com/wp-content/uploads/2016/11/tmp6d1fa6b6.png

我翻了一下我CI上的库记录,发现前两个月的库是没问题的,看来是中间某段时间修改混淆脚本出了问题。

一番定位,找到了元凶:

Read more




FIDO UAF各文档主要内容介绍

本文将介绍FIDO UAF各个文档的内容:

fido-appid-and-facets

介绍了appID和facetID的命名规则和作用。
appID是app(可能是手机软件,也可能是网页)调用UAF Client时提供的标识名,而facetID是app中更具体的标识。

对于手机软件(Android和iOS),appID和facetID是一致的,Android的facetID必须是apk的签名信息,iOS的facetID必须app的bundle-id。

对于网页(可能是电脑,手机上的网页,或app内嵌的网页),FacetID就是一个URL,而appID必须和FacetID有相同的公共的[……]

Read more