打开微信加密数据库

微信 Android 数据库使用 SqlCipher 加密, 从代码来看, 是使用 sqlcipher 1 版本,

1
2
private static final SQLiteCipherSpec qDP = 
new SQLiteCipherSpec().setPageSize(1024).setSQLCipherVersion(1);
阅读更多

Android微信数据库密码生成规则

规则

加密规则, IMEI 拼接 uin , 然后取 MD5 信息摘要 (32位小写), 最后截取前七位.

其中 IMEI 可以在拨号键盘输入 *#06# , uin 存在 sp中, 路径为\data\data\com.tencent.mm\shared_prefs\auth_info_key_prefs.xml 中,如图所示:

阅读更多

部署 SonarQube 服务器

最近搭了下 SonarQube 服务器,在这里记录一下,以免下次需要的时候又花大量的时间精力找资料、找文档。

概括来说,主要分为以下几个步骤:

  1. 安装 JDK11 环境
  2. 安装 PostgreSQL 数据库
  3. 官网下载免费社区版本,并解压到非数字开头的目录。 LTS 表示长期维护版本(Long term support)
  4. 创建 sonarqube 用户, 因为依赖的 Elasticsearch 不支持 root 用户启动
  5. 到*$SONARQUBE-HOME/conf/sonar.properties* 文件中设置数据库连接参数。
  6. 启动*$SONARQUBE-HOME/bin/linux-x86-64/sonar.sh*

接下来,会分别介绍每步的操作和可能遇到的坑。

阅读更多

Android 7.0 及以上版本, https 抓包

前言

因为 Android 7.0 安全机制调整, 默认情况下 系统只信任内置的 CA 证书, 因此在使用 fiddler , Charlse 这种通过手动安装 CA 证书,利用中间人抓包的软件都失效了.

当然,道高一尺,魔高一丈, 对于已经 Root 过的手机依然可以绕过这一限制.

阅读更多

kotlin入门精简版

构造函数

一个类可以有一个主构造函数和一个或多个次构造函数

1
class Person @inject constructor(firstName: String) { /*……*/ }

当没有访问修饰符或者注解时可以省略constructor关键字

阅读更多

Android屏幕适配的前世今生(一)

自从工作以来,一直以屏幕适配斗智斗勇。由与Android碎片化严重,存在各种奇奇怪怪的分辨率,为了开发高质量的app,必然需要尽肯能的适配多机型,其中屏幕适配就是其中一项。经过多年的磨练,学习到了一些奇技淫巧。借此机会,做个总结,也算是给自己一个交代,如果顺便能帮到一些同学,那就再好不过了。计划分成两篇文章来彻底阐述屏幕适配的前世今生。本篇先介绍下为什么需要适配,以及为下篇怎么适配提供些预备知识。

阅读更多