Welcome, My Friends! ①普通用户推荐使用Chrome ②教育网用户推荐使用搜狗高速浏览器“高速”模式浏览本站

编译器对switch case结构的优化

2012年5月17日 代码疯子 没有评论

在使用IDA分析Crack Me的时候,发现IDA对switch case结构的分析很是清晰,还发现了一个jump table for switch statement,也就是所谓的跳转表了,是编译器优化的结果。对于case分支的值是连续的那种,所有分支的跳转地址都会存入一个数组之中,然后通过case的值来寻址,如果值超出边界则直接跳到default分支所在地址。

如果case分支的值之间有一定的间隔,但是差距又不是很大,则会先生成一个数组(可能比较大),先通过switch的变量当做下标在一个数组中取得对应的值,然后把这个值当做下标再在跳转地址表中取得对应的地址。

如果case分支的部分值之间有一定的间隔,而又有一些分支的值没有规律,比如很大,且分布不均匀等。那么分布均匀的那一部分将采用两级跳转表的形式,而其他分支则采用简单的比较判断方式。

如果case分支值没有规律,则会采用二叉树查找的方式进行优化。
[......]

一个简单的CrackMe分析

2012年5月16日 代码疯子 没有评论

好久没有接触CrackMe,水平也一直很菜,汇编懂一点点,就是静不下心来看东西。这是crackmes.de上面找到的一个简单CrackMe程序,不过原始下载链接已经忘了,下载地址稍后随IDB文件一起给出。这个CrackMe比较有意思,不是通常的Username / Serial的检查,而是直接给出的两个文本框控件,当然具体填什么就需要自己逆向了。

程序名称:MyCrackIt.exe By DevAstatoR
加密信息:无花无壳,Win32 SDK编写
容易程度:★☆☆☆☆

大概分析:根据IDA对程序的反汇编信息,可以知道第一个框需要填入一个数字,通过SendMessage发送WM_GETTEXT的形式获取这个字符串并通过StrToInt()函数转化为数字,获取第二个文本框的信息同样是通过WM_GETTEXT来实现的,但是这个消息的值是通过第一个框的数字计算出来的,可以推出第一个框的字符串为131313(WM_消息的值参考WinUser.h头文件)。[......]

分类: 逆向调试 标签:

Android手机所剩的内存空间不多了

2012年5月14日 代码疯子 2 条评论

Android低配手机伤不起,每次想装个程序,结果跳出来一个“手机所剩的内存空间不多了”,搞得手机短信都收不了。总感觉好端端的512的ROM,即便是装完系统也不至于这样啊,程序也没装几个,能放SD卡的基本都放在SD卡。什么360手机卫士、金山手机卫士的垃圾清理功能基本都是浮云!

下面是一些比较管用的清理方法(手机需要ROOT,装有类似Root Explorer之类的管理软件,重点看最后一条)。

1. 删除没用的系统程序以及预装程序
2. 清理铃声
3. 清理dalvik-cache文件夹
清理dalvik-cache文件夹是重点,在第一步删除系统程序的时候,/data/dalvik-cache里面关联的文件不会自动删除,所以对应的dex文件需要自己手工清理,这里会清理出比较大的空间出来。[......]

很惊讶腾讯主打产品QQ有这种缺陷

2012年5月5日 代码疯子 17 条评论

这事还得从腾讯的下载工具QQ旋风说起。本来是一直使用迅雷的,但是很多网络环境下都不允许了,比如P2P封杀的环境下迅雷就成了废物一个了,于是转投QQ旋风。其实P2P封杀的情况下旋风照样封杀,但因为其提供免费的离线下载,在我的LV7等级下有3G的离线空间,显然无法下载一个电驴共享的8G的文件,所以就开了个QQ会员,进行离线下载。

关键不是下载。晚上睡觉的时候开着手机QQ聊天,早上起来想把聊天记录同步到电脑上,坑爹的QQ竟然因为开通了会员就没有消息记录同步功能了,只能会员漫游,而且咋一看啥都没有。于是去看腾讯的说明,当时我就震惊了,手机聊天记录不能漫游!

无赖之下找客服提问,客服MM说的确是这样的,手机QQ聊天不漫游啊!不漫游也就算了,那非会员的同步我总可以用吧!怎么找不到了?客服说消息同步只有非会员才可以使用。还特别说会员的功能叫消息漫游,非会员的叫消息同步。[......]

VS2008 SP1 MFC程序在Windows 2000下提示找不到gdiplus.dll

2012年4月20日 代码疯子 没有评论

用Visual Studio 2008 SP1写了一个MFC程序,拿到Windows 2000下运行的时候提示找不到gdiplus.dll,这个程序确实不需要gdiplus.dll,但在导入表中确实有gdiplus.dll。就是SP1的补丁搞的鬼。

微软在Visual Studio 2008 SP1补丁发布时特地说明不要gdiplus.dll MFC程序也可以在2000下运行(Bugs fixed in MFC in Visual Studio 2008 SP1):

Running MFC applications on Windows 2000 (with or without GDIPlus.dll) is supported.
在CodeGuru上的一个帖子MFC and GDI+ problem上找到了解决方案:
把CProjectNameApp的基类从CWinAppEx改为CWinApp就行了,是要改动三处:

头文件ProjectName.h中类的定义:class CProjectNameApp : public CWinApp[......]

Windows INI文件API不支持UTF-8

2012年4月17日 代码疯子 没有评论

和编码接触的多了新建文件基本都用UTF-8编码了,于是神经质的建了一个UTF-8编码的配置文件,用Windows的GetPrivateProfileString总是获取不到正确的信息,也没有任何错误提示,GetLastError()返回的是S_OK。后来把编码改回ANSI就能正确获取结果了。

不过MSDN里面说INI这种玩意还是少用的好,要用注册表:

Note: This function is provided only for compatibility with 16-bit Windows-based applications.
Applications should store initialization information in the registry.[......]

GZip magic标志0x8B1F

2012年4月7日 代码疯子 4 条评论

曾遇到过一个特殊的文件,格式未知,就特地搜索了一下文件前面的两个字节,是0x8B1F(就是通常所说的magic number了),猜测极有可能是GZip了,不过解压的时候CRC校验失败了。
GZip常用于服务器像浏览器传送数据时进行数据压缩处理,类似的技术还有Defalte,小站就采用了这样的技术,加快页面的响应请求。在发送GET请求时,如果指明支持GZip或Deflate,如“Accept-Encoding:gzip, deflate”,那么实际传送过来的数据就是经过了压缩处理的,如果是浏览器[......]

继续阅读

分类: Python编程 标签: , ,

Python脚本拉取优酷高清视频FLV下载地址

2012年4月1日 代码疯子 7 条评论

为了不浪费你的时间,首先要说明的是,Flv地址是通过第三方网站生成的!
场景:迅雷和旋风的李先下载都没有任何速度,完全无法忍受不能下载视频的痛苦啊!但是,打开视频网站,加载速度出奇的块,能不能直接从视频网站拉取视频呢?视频网站一般是不给下载地址的,但优酷又提供高清视频,嘿嘿~通过第三方网站Flvcd可以拉取下载地址,但一般视频网站都会吧视频文件分割成很多份,复制地址再粘贴的Ctrl+C和Ctrl+V显得有点别扭,就写个脚本拉取地址吧。

通过python提供的urllib2和re模块就可以了,把下载地址都写入一个lst文件(迅雷和旋风都支持批量读取地址下载),当然这个工作可以在IE下右键迅雷批量下载,但我的网络貌似迅雷不可用![......]

Windows下Python添加MySQLdb扩展模块

2012年3月20日 代码疯子 4 条评论

为了给Python装个MySQLdb模块(这里说的是Windows),真是破费了不少时间。本来Python自带SQLite数据库模块,使用起来也挺方便的,但是SQLite不支持远程访问啊!!!所以只能用MySQL了。下面详细描述一下配置过程,以后可以参考!
安装MySQL
安装MySQL不用多说了,下载下来安装就是,没有特别需要注意的地方(本来是有的,不过有替代方案,见后文)。一个下载地址:
http://xiazai.xiazaiba.com/Soft/M/MySQL_5.5.20_win32_XiaZaiBa.zip
安装SetupTools
下载地址:http://pypi.python.org/pypi/setuptools 如果你不先安装SetupTools而是直接安装MySQLdb,那么很有可能会提示如下错误:
ImportError: No module named setuptools[......]

WP Thread Comment点回复没反应原来是毒霸在“搞鬼”

2012年3月17日 代码疯子 6 条评论

昨天我发现博客的评论回复邮件通知功能没用了,一直很纳闷。我用的插件是WP Thread Comment,用了很久了,一直可以用;安装这个插件之后会在评论下面增加“回复”两个字,点击就可以把评论回复发送到被评论者的邮箱,这的确是个不错的功能。
但就在昨天,点击“回复”没反应了,我也没怎么在意。但今天依然没有任何反应,如果评论不能及时推送给被评论者,这就是去了讨论的意义。也试着去网上找了下解决方案,大概有下面几种说法(网上的问题解决方案总是千篇一律):

  • 权限问题,把WP Thread Commen[......]

继续阅读