"编程相关"果不其然又成了文章最少的分类...以我目前的水平..实在是选不出来也写不出来什么有水准的代码,所以今天这个简易的shell程序就当是在充个数吧.
文章来自:www.sacour.cn
upx是一个非常简单的壳,脱壳方法也很简单,由于即使是手动脱壳,时间也不到2秒,而为了脱这个壳还得开调试器,dump来dump去的,倒不如调用它的主程序upx.exe,使用其-d开关来脱掉壳,脱除后文件排列比较整齐,至少比od之类dump出来的数据看着舒服,而且体积也小一点,但是由于upx.exe是console app,手动执行的话毕竟有点麻烦,于是我就偷懒做了个小程序来自动调用它.
以下使用devcpp 4.9(5.0),建立一个c语言console app,写入如下代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char command[1000]; //定义变量,来存储最后的命令
if(argc==1){exit(-1);} //如果没有附加参数则退出
sprintf(command,"c:\\upx.exe -d \"%s\"",argv[1]); //组合参数,加粗部分换成你机子上upx.exe的地址即可
system(command); //执行组合后的参数
sleep(2000); //休眠2秒,用于显示最后结果
return 0; //退出
}
代码非常简单,一点水准都没有....可谓是学了c语言不到1小时就能写出来的玩意,不过实际用起来(如果你经常调试病毒之类的)还是挺方便的,怎么个方便呢?
先编译这个exe,然后把exe复制到%userprofile%\sendto(直接在地址栏这么输入就可以了),这样,如果哪个文件你一时懒了,不想手脱了,直接右键点击,选"发送到 -- unpackupx.exe" (假设编译出的exe名叫unpackupx.exe),那个文件就可以脱掉upx这件外衣了.