写这个东西也是源起于计划中的木马程序,需要这样的功能。
虽然是个很简单的程序,不过真动手写起来,还是有很多意想不到的问题。
CreateDirectory是第一个让我吃苦头的函数,它不能依次创建中间的目录,看MSDN的时候不仔细,导致周六晚上调试到3点多还是没发现问题所在。
其次是钩子。一开始用的键盘钩子,需要写一个dll,这也是第一次写dll。静态连接的时候出现了c和c++的连接问题。改用extern “c”申明,还是如故,不解。动态载入,依旧。简直快崩溃了,后来想到一个特别费劲的方法:用LordPE改DLL的输出函数表。直到头晕脑胀,改用记录钩子为止。安装钩子的时候也挺搞,一开始貌似无限自递归,到程序死掉为止。后来是把dbgview都能死掉了:)原因不明。
这些都算是教训吧,也有收获,比如,发现dbgview挺好使的,配合来调试。
BMP转JPG本来想自己写,找了个源代码一看,乖乖,那么多,看明白都得一个星期。还是老老实实用别人的dll了,不过,一个dll就200k,我辛辛苦苦节省下来的大小啊。。。。。。
那个dll本来是把磁盘上的bmp文件转成jpg,我的程序生成一个bmp,大概3M,,再调用dll转化,这个方法比较奔,操作也比较费时。还是设法直接在内存中转换格式了。
最后把dll和exe用aspack打包了一下,看上去。。。。。也不算太大吧:)
最大的收获:看和做是两回事,自己动手了,才能真正搞明白。完毕!