[Icy_Ybk 的逆向分析笔记,转载请注明出处,谢谢]
今天发现 CPU Speed Pro 在最后总是烦人地跳出一个网页来,觉得这个实在是太烦人,干脆就把它给破掉吧!
于是我就查看了它的导入表。运行浏览器也是属于运行程序的一种,那么逃脱不开创建进程 CreateProcess 或是 ShellExecute。
eXeScope 查看导入表关于 kernel.dll 的部分,发现并没有 CreateProcess,那么应该就是 ShellExecute,再一看 shell32.dll 部分,果然是,如下:
导入, shell32.dll
顺序 (示意) 名字
00000000 ShellExecuteA
00000000 SHGetFileInfoA
第二个直接忽略,那个肯定跟今天这个无关。目标锁定 ShellExecuteA(这是 ShellExecute 的 Ascii 版本)。
既然找到了目标,那么就开始 coding 吧!
第一次破解测试,原理:利用 API 钩子,钩取到 ShellExecuteA 的函数调用,然后直接拦截。错误码暂不考虑,先看看这个能否拦截打开浏览器这一操作。
直接上手洋洋洒洒地写了一个 API 钩子 DLL,并插入到程序中,哪成想程序不认账,一打开就报错: