BREW中对malloc和free检测内存泄露

大约3到4年前,我刚刚开始对BREW进行深入的了解和开发。面对的都是C代码,里面充斥着MALLOC和FREE的调用,难道他们就不会封装一下吗?问题在于,程序可能不是自己写的,嗯,程序的某个地方,在某个时机可能会产生内存泄露;程序在退出时,系统不会自动释放占用的内存吗?答案是NO,直到关机之前,BREW都不会帮你释放,包括最新的BREW 4.0系统。而kddi对此也进行了非常严格的重视,程序进入之前剩余内存和程序退出之后剩余内存误差在5KB之内。系统本身会造成一些内存浪费(碎片),即使在这种情况下,也要求误差5KB。想象一下,查找一个地方的内存泄露是多么的麻烦。因此,换个角度,是否让程序来帮助我们查找,当然,答案是肯定的,不然,我就是在骗人了。
继续阅读BREW中对malloc和free检测内存泄露

试用slitaz

这几天本来是想将老机器做服务器,找一个占用内存比较小的版本,(现在机器挂掉了),原来老机器用的是puppy,puppy是不错,但每次意外挂机总不能正常进去,某些需要配置。查找期间,看到了slitaz,只有30MB左右,在虚拟机里面跑了一下,大概占用内存几十MB。老机器挂掉之后,我买的8G存储卡到了,就想转到存储卡上吧,省的在每台电脑上都要配置开发环境。于是就开始了试用之旅。
继续阅读试用slitaz

makefile自动切割资源文件

曾经,有个项目,资源文件过大,mod+所有资源+sig+mif文件超过1.5MB(日本kddi有这方面限制),又不允许使用mod压缩的方法(该方法有些非常非常小的缺陷),他们说,随着mod附带一部分资源,剩下的资源文件在线下载吧。
听起来很简单,不就是把资源文件分割掉,放到网上去么,事实的情况是:程序中要知道随着mod附带了多少资源;总共有多少的资源包没有下载;下载了的资源包是否有损坏;网络通讯中间是否有错误;网络下载是否当天超过了6MB;本程序当天下载是否超过了3MB,(3MB和6MB等都是kddi的规定);下载完成之后,中间某个资源包错误之后,程序需要判断是哪一个,并且重新下载;包的分割多大为合适(用户不会希望等半天都没有进度显示);程序需要计算剩余多少没有下载。
一句话引发了一场灾难,我的项目都是使用make来编译的,资源使用make来整理的,如果make能帮我自动计算并分割,那我将会省很多事情。我很庆幸自己用命令行的方式,如果用IDE的方式,每次的更改将会是一场灾难。于是就写了下面的makefile:
继续阅读makefile自动切割资源文件

Ollydbg脱壳dump代码工具

若干年之前,曾经年少轻狂,不知天高地厚,研究了一段解密。大话西游2有段时间使用acp什么的加壳(现在情况怎样,早就忘记了),用程序脱壳之后,最有很多代码没能修复。幸好有Ollydbg,也幸好Ollydbg有一大堆辅助的插件。但总是手工修复实在不是人做的事情,于是,就找到了OllyMachine。更大的幸运是OllyMachine是开源的,于是就对它做了些修补,增加了些功能,可以自动将修复好的代码按照一定格式dump出来,这样可以更好的进一步处理。废话就不说了。先是README.txt。
继续阅读Ollydbg脱壳dump代码工具