这几天在Android上给zip加上aes解密方法,刚开始使用的是zlib库中的minizip代码,发现不支持aes加解密,就换了github上的minizip库。等都编译OK,一运行就出现了异常,返回结果为-3,把msg输出如下所示:

1
invalid code lengths set

搜索了-3,发现对应的是Z_DATA_ERROR。把测试zip包用winrar解密,发现一切正常,不是zip包数据原因。

然后编译了源码中minizip.c文件,使用命令的方式执行了一下生成的minizip文件,发现能正常解密。看了一下minizip源码中的CMakeLists.txt文件,给Android.mk文件中增加了如下参数:

Read More

这几天遇到一件怪事,使用加固工具后,打包出来的APK无法在Android 4.2版本的手机上安装,不使用加固打出来的安装包却可以安装。于是找加固厂商询问原因,加固厂商拿了不能安装的文件后,又发了一个安装包让我们测试一下,结果可以了。询问原因,说是我们给的安装包没有签名,加上签名信息就好了。于是用keytool工具看了下原安装文件的签名信息,发现都有。把执行命令包含有签名信息的截图发过去了之后,加固厂商问了使用的签名工具,然后说是用jarsigner工具的问题。于是一查,还真是。

Read More

这几天在用golang写一个工具,要执行外部命令工具,而且还要将外部命令工具输出的日志也要输出出来。网上找了一下,资料很多,关键是执行的结果成功或失败状态没找到好的方法获取到。刚开始想的是看错误日志,如果有错误日志,那么就是执行失败。测试的时候发现这样不行,发现有些时候会用error输出日志,但不一定就是执行失败。后来想用日志中的关键字匹配,因为有些命令执行成功或失败都是有关键字输出的,测试发现也不太好。最后没办法,看了一下Cmd.Wait()方法的实现,突然眼前一亮,找到方法了,有一个Cmd.ProcessState结构体可以使用。于是整理了一下,贴一下代码实现:

Read More

使用jquery的ajax请求时,发现每次都是走error的回调函数,错误提示的日志为{"readyState":0, status: 0, status:"error"}。抓包请求发现请求正常返回数据,但是js代码却执行error的回调。其他组开发人员反馈的问题描述是在App中使用离线代码没有问题,使用地址访问就有问题。自然而然就想到了跨域问题,一看请求地址,果然。

服务器端接口响应的头增加以下内容就可以解决:

Read More

最近在处理公司App的安全问题,跟第三方公司人员沟通,提到有使用drozer工具检测。装了下这个工具,在这里记录一些坑。

drozer是一个python编写的开源工具,在github上面有源码,地址:https://github.com/mwrlabs/drozer。其功能很强大,可以检测App中的四大组件的导出情况、Intent拒绝服务、SQL注入风险以及可以自定义Module等。尤其是自定义Module功能,自己按格式编写一个Module功能,就可以获取终端设备及App的信息。

drozer工具有两部分:一是PC端,另一部分是终端APK。

Read More

博客好长时间没有更新了,因为年底和年初,你懂的,希望以后进入轨。

前几天在开发过程中遇到这样一个HTTP请求错误:

1
2

okhttp too many follow-up requests: 21

看到okhttp反应过来是底层请求出现问题了,以前从来没有遇到过,很好奇。在github上面okhttp库搜索了一下上面的关键字,找到下面的代码:

Read More

博客好长时间没有更新了,由于前段时间疯狂赶项目,有些问题没有来得及时整理,后面慢慢总结一下。

前段时间在优化相机扫描二维码时,遇到了一个内存溢出问题,内存被用完了,日志中出现E/dalvikvm-heap: Out of memory on a 2366828-byte allocation错误提示,App也没有崩溃,只是相机不再输出拍摄到的内容。使用Zxing做过二维码扫描的同学都知道,被扫描到的内容会不停的被处理,并识别出二维码内容,如果有。而此时内存被用完了的现象是:相应的回调处理识别二维码内容的方法没有被调用。于是展开了排查。

Read More

前几天编译boost1.65.1版本,遇到一些问题,主要是与环境和版本有关系,如果不知道这些细节,很难找出问题。这里记录一下。

一、boost库编译

在windows下编译boost库可以参照这里:https://gist.github.com/sim642/29caef3cc8afaa273ce6 ,整个过程配置都可以按照上面来,但是要注意下最新版本的MinGW,同时还要注意是64位的还是32位的。

因使用的boost版本是目前最新版本的,所以要求内置gcc编译器的MinGW也要是最新版本的,否则在执行b2命令设置toolset=gcc时,会提示找不到gcc。另外还要注意系统是32位还是64位,对应的gcc也要相同的版本。

Read More

前几天处理一个很奇葩的问题,解决过程可谓一波三折啊,处理起来却很有意思,这里记录一下。

事情的起因是同事写了一个在android系统调用系统相机的拍照的功能,将路径通过Intent传过去,照片拍好后保存到路径,通过路径取这张照片。

突然有一天点这拍照功能无效了,直接crash。一看异常日志,发现抛出的是ActivityNotFoundException。第一反应是以为是Activity没有注册或者打包出现问题了,于是把Apk反编译,在AndroidManifest.xml中检查了下注册,在dex文件中也找了下相关的类,结果发现都没有问题。

Read More

前几天使用golang时,遇到一个很奇怪的问题,原因是对golang不熟悉,所以记录一下。

在使用append()函数给slice中添加元素时,slice的初始大小可以为0,也就是len可以为0。每次向sliceappend的时候,如果容量cap不够,会自动对slice进行扩容,也就是改变slicecap的大小。

Read More

前几天在使用Okhttp时遇到两个坑,这里记录一下。一个是在请求头中不需要设置Accept-Encodinggzip,使用Okhttp默认的就好;第二个是添加到Okhttp请求头里面的键值对不能为空。

Read More

前几天sublime发布正式版本,mac下面一直没有发现跟windows下的notepad++相媲美的工具,于是装了下sublime玩玩,也试了下markdown插件,结果发现太坑爹了,于是走上了不归路。

装完markdown插件后,打开md文件,发现界面很丑,MD风格都被吓跑了。如下图所示:

Read More

前几天使用命令行adb install安装APK文件时,安装失败,遇到了这个错误提示:

1
INSTALL_FAILED_UID_CHANGED

突然反应过来了,刚刚使用手机的root权限看app的缓存数据,命令行还在那个/data/data/com.xxx.app目录下,由于命令行的占用,所以这个包名路径没有被删除掉。赶紧退出到/data/data/目录下面,ls一看,这个包名路径还存在,用rm -rf一删除,再安装试下,成功了。

Read More

前几天在使用gradle编译项目插件,突然遇到这个错误:

1
2
3
4
5
6
7
8
9
10
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileReleaseJavaWithJavac'.
> Failed to create MD5 hash for file 'E:\workspace\as\app\libs\xxx.jar'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Read More