fHash 2.0.0 for Mac OS X

fHash 2.0.0 for Mac OS X is available on Mac App Store now!
Image of Mac App Store

fHash is an open source files’ hash calculator for Windows and Mac OS X

  • MD5, SHA1, SHA256 and CRC32.
  • Drag & drop.
  • Integrated with context menu in Explorer/Finder.
  • Support multiple files.
  • Support 10.10 and later Mac OS X.
  • English and Simplified Chinese UI.

The icon “希” is from hash in Chinese “哈希”.
Thanks for Trend Micro Mobile Club’s support.

Project Site https://github.com/sunjw/fhash

继续阅读

用 WinDbg 调试符号不全的程序

其实也就是记录一下用 WinDbg 调试 fHash 的一次过程,这个 bug 是由于没好好看文档造成的,我需要让 fHash 知道当前运行的操作系统是 32 位还是 64 位的,之后好去选择正确的 shell extension 文件。查文档看到了这个函数 IsWow64Process ,之后错误的以为 kernel32 中有这个函数就是 64 位操作系统,结果就已这个逻辑写下了错误的 64 位系统判断函数,和错误文件读取逻辑。


tstring tstrExeDirPath(pszExeFullPath);
tstring::size_type idx = tstrExeDirPath.rfind(_T("\\"));
tstrExeDirPath = tstrExeDirPath.substr(0, idx);

tstring tstrShlExtDll = tstrExeDirPath;
tstrShlExtDll.append(_T("\\fHashShlExt"));
if(IsWindows64())
    tstrShlExtDll.append(_T("64"));
tstrShlExtDll.append(_T(".dll"));

WIN32_FIND_DATA ffData;
HANDLE hFind = FindFirstFile(tstrShlExtDll.c_str(), &ffData);

bool bRet = (hFind != INVALID_HANDLE_VALUE);

if(bRet)
{
#if defined(UNICODE) || defined(_UNICODE)
    wcscpy_s(pszShlDllPath, MAX_PATH, tstrShlExtDll.c_str());
#else
    strcpy_s(pszShlDllPath, MAX_PATH, tstrShlExtDll.c_str());
#endif

   FindClose(hFind);
}

return bRet;

结果很自然,在 32 位的 Windows XP 上没有执行正确。但是测试环境没有 VisualStudio,而且用的是 Release 编译,也没有带着符号文件,这怎么调试呢。Windows XP 上装有 WinDbg,那么就用它来调试。

继续阅读

开始向 Google Code 迁移

上次做 PPT 的时候被 @Li Fanxi大神 问到一个问题,为什么不把 Tetris5 托管在 Google Code。当时倒是没多想,毕竟 SourceForge.net 的用这也比较熟了,所以也没有太多考虑过是不是应该试试别的托管服务。后来逐渐的开始使用 GitHub 以及 SourceForge.net 时不时的无法访问(和墙没什么关系,是 SourceForge.net 自己的问题),让我开始有了换个托管服务的想法。

一开始想直接迁移到 GitHub 上,但是目前 Git 还不太会用,而且之前的项目一直用 svn 管理的,所以考虑了一下还是 Google Code + svn 作为迁移目标。

第一个迁移的是 fHash,说明、截图和下载已经转移完毕,代码库随后也会移过去。

JSMinNpp 也会被转移过去,并且将会趁此机会改名为 JsToolNpp,因为现在已经远远不是一个 JSMin 功能这么简单了。这个估计要花一些时间才能完成,希望赶得上下一个版本的发布。

KB2465361 补丁导致 VS08 编译 MFC 体积增大

微软的 KB2465361 补丁导致 VS08 编译出来的 MFC 体积明显的增大。发现这个问题是在编译 fHash 的时候,原来只有 297KB 的 Release Build 一下子变成了 2MB 多,一开始还以为是我自己修改了代码所致,但是仔细查看变大前后的代码,没有可能会导致体积明显变化的修改。用 Dependency Walker 查看后发现,新的二进制链接了 gdiplus.dll 等一堆新的链接库,而代码中根本就没有用到它们。

仔细想想和上一次编译之间唯一的变化就是安装了 KB2465361 补丁。上网查了一下,有这一篇博客确认了这个问题,并提出了解决方法。 继续阅读

fHash 开源

从今天起,fHash 将基于 GPL 2 协议发布并开放源代码。项目托管于 SourceForge.net,一开始想使用 Google Code 的,但是一来比较熟悉 SourceForge.net,二来 Google Code 由于众所周知的原因访问不是很方便,项目主页是 fHash@sf.net。同时发布中文版英文版并且接受捐款

其实本来就应该基于 GPL 2 开源,因为程序中使用的2个算法是使用 GPL 2 协议的,那么开源 fHash 就算是停止违反授权的行为了^_^。