遊戲/程序/更新/二次開發/小作品相關發佈
Jun 11
上一回讲到在客户端中主流的静态图片资源PNG的使用情况与压缩方式。当然啦,PNG这种前端各方面都广泛支持,并且大家都使用得很满意的格式,大家都很喜欢很愉快的使用啦。而对于稍微没那么常用的动态图片资源,虽然主流的是gif,然而由于各种条件限制大家都使用得特别不开心,各自都在提出新的解决方案。

现在,除了gif,还有继承于png的apng,这也是我比较喜欢的,png的兄弟mng,还有webp的高级版本也支持动图。在这么多方案中,虽然自己都说自己好,不过我站我的APNG还是需要充足的理由,因此接下来由APNG展开讲讲各大客户端动图策略的异同和对比。
Jun 2
在前端和App,现在最常用的图片资源文件,不用想肯定是PNG了。而作为客户端优化的重头戏,压缩PNG资源大小总是我们最关心的东西。有这么一个网站,tinypng,是现在主流压缩png的工具/服务中压缩率最高的没有之一,大家都很喜欢它。不过不开心的是,这个网站提供的是在线服务(虽然有接口访问)并且量大是要收费的。因此,我们需要寻求一个自己适用的PNG压缩方案,就算无法实现,也能对相关内容有更深入的了解。

PNG的构成
Apr 26
背景

1. 在现在业务场景下,应用需要进行复杂的统计操作,其中涉及到复杂的页面数据来源追踪和储存关联上报。
2. 已拥有基本的第三方统计sdk,需要对它进行再次封装才能实现需求。

统计模块实现

由于需要重新封装统计模块,因此需要按需求进行多层抽象。
Mar 19
对于已经获得的crash堆栈,无论是否可以通过符号表获得代码实际情况,只要我们没发看到确切的代码,都是无法直接通过crash栈直接进行分析。特别是遇到整个crash堆栈里面完全没有自己项目的代码,或者虽然是我们的项目名下的堆栈,却是通过pod引入的第三方库。更现实的是,为了加速代码编译或者开发者干脆就是闭源的,往往pod引入的库都是二进制的静态库,所以我们得到的堆栈肯定没有具体代码行数,看到堆栈肯定是无计可施。

遇到这样的情况,我们看到的堆栈往往是:0x100072ea4 0x100050000 + 143012这样只会有堆栈指令的pc位置或者方法名 + offset显示出来的pc位置,而不是。这样我们需要分析代码,只有通过分析具体的汇编指令才能继续下去。
而Hopper这个iOS查看和半反编译工具正适合这件事。
Feb 23
相对于java从设计之初就养成的一条exception往下流,trycatch到底的作风,在我们iOS开发过程中,oc的异常处理就是一个不可逾越的障碍阻碍着程序的运行与调试。因为oc一般用NSError甩错误,一旦遇到异常,八成就是非常非常严重的不可挽回的错误了,并且由于oc往下直通c层,里面发生的异常简直是多种多样非常难以准确定位和分析。因此,我们来总结一下常见的异常和抓取处理分析方式。
Feb 8
最近,Airbnb正式在github上发布了酷炫狂拽屌炸天的移动应用库Lottie(http://airbnb.design/lottie/)。这个库的作用是在应用中native的渲染AE动画的导出(导出依赖的是bodymovin库),同时支持android,iOS和RN3个端/平台。由于AE是业界做酷炫狂拽屌炸天的动效的行业标准软件之一,如果可以直接导出的话,UE就不用啰啰嗦嗦的给FE分解动画了,FE也不用费超级大的劲儿去手动实现复杂的动画了。看这发布了10天,3个库加起来有1w4的star了,就知道大家是多么的激动~。那么这个东西到底能带给我们怎么样的体验呢,我们来尝试一下。
Jan 11
在这里阅读的是,微信安卓653.980版的反编译后的代码。很清晰的可以看到,小程序在代码中被称为appbrand,主要逻辑放在包com.tencent.mm.plugin.appbrand下面(部分抽出的ui控件除外);另外引用了3个js资源,均在/assets/wxa_library/下。虽然很大部分代码被混淆过的,但是适当的反编译后,我们还是能看出绝大部分东西。
Jan 11
这两天拆了一个微信小程序的自定义文件格式wxapkg(详见另一篇关于微信小程序的博客文章),虽然这个文件格式确实很简单,不过也是基于我以前拆文件的经验才分分钟看透的。既然有做了这么一件事儿,那就来顺便总结总结,对文件逆向工程时我的思路和方法。

-1. 开始前的工作

我们需要一个hex编辑器,不需要编辑的话hex浏览器就可以了
我们需要样本文件,至少要两个。如果有能够生成这个文件的软体本体更好。
我们先尝试过常见文件格式进行操作,比如zip什么的,太常见了。