09年写的第一个小程序:CrackMe之十

1、将以前的一个字符串变形函数,结合变形MD5,对注册进行验证!
2、为了防止爆破,将所有的代码都放到动态申请的内存里运行,同时对原代码进行简单的加密,呵呵!

源码与分析先不放出来,等过阵子再放出吧,呵呵!
CM运行如图:

CrackMe之十的加强与优化

1、将以前的一个字符串变形函数,结合变形MD5,对注册进行验证!
2、为了防止爆破,将所有的代码都放到动态申请的内存里运行,同时对原代码进行简单的加密,呵呵!


以上两点依然保留,但同时在进行关键比较时:
1、进行两次查表计算后再对比
2、在对比完成后,重新对母表排序!

我犯的一个小错误,呵呵(关于strlen的运用)

习惯性的用strlen来取得字符串的长度,却不想昨天也在这个上面犯了点粘错误!
原来,对于字符串中含有字节为“0”的话,获取的将是错误的,因为strlen的处理是:
碰到0字节时将直接返回,而不考虑后面是否有值,如下:

00407818    |.  8B41 FC          |mov eax,dword ptr ds:[ecx-4]========取字符
0040781B    |.  84C0             |test al,al                               ========判断是否为0了
0040781D    |.  74 32            |je short test.00407851          ========是,就只好直接退出了!

一个简单的系统托盘图标的实现

很久没有弄这个了,差点了,见朋友的博客有个Delphi版的,于是自己也想弄一个VC的出来!
要实现系统托盘图标,关键在于一个系统函数和一个数据结构。
函数就是Shell_NotifyIcon,原型如下:
BOOL Shell_NotifyIcon(DWORD dwMessage,NOTIFYICONDATA  lpdata);

而数据结构就是NOTIFYICONDATA了,呵呵,具体如下:

一个简单的弹出菜单的创建

好久没弄了,只是实验一下,呵呵!
所涉及的API,就是一个TrackPopupMenu或者TrackPopupMenuEx!
原型如下:
BOOL TrackPopupMenu(
    HMENU hMenu,  //指向弹出菜单的句柄
    UINT uFlags,  //设置的标志位,用于指示弹出菜单的样式,如文字对齐方式
    int x,
    int y,    //弹出菜单的左上角位置
    int nReserved,
    HWND hWnd,    //接收弹出菜单消息的窗口
    HWND prcRect  //忽略
);

两个链接选项:对齐设置与PE节合并

具体的选项设置与说明如下:
#/OPT:WIN98选项,设置文件对齐为0x1000,
#                 但对于大文件,则不一定处理!(不确定性,由链接器自行决定)
#/MERGE:.rdata=.text选项,是将.rdata节合并到.text节

为了测试,写了个小汇编,代码: