首页
社区
课程
招聘
[求助]代码解在壳申请的内存区
发表于: 2007-2-4 18:47 3867

[求助]代码解在壳申请的内存区

2007-2-4 18:47
3867
周末时拿到一个病毒样本,代码解在壳申请的内存。

解码比较复杂,N线程通过EVENT同步解代码。而且貌似使用了自校验的值作解码参数,我本想在WaitForSingleObject后面下断,线程解完代码就自动断在主线程的,可是这样做就导致解出来的代码是错的。同样SETEVENT和EXITTHREAD也试过了。最后没办法,带壳运行,看到程序在注入IE之后自动退出了,我就直接在EXITPROCESS下断。

代码从14B000开始的。我DUMP下来之后,加上PE头,把基址改成这个显示无法启动程序。

尝试改NOTEPAD的基址,10000000可以,400000也可以,改成14B000就不行,系统提示无法启动。

另外IMPORTREC只能在EXE被分配的内存空间中取IAT。

暂时的解决方法用OD写了个脚本,把IAT的符号都提出来。然后用IDC写了个脚本,把相应地址的调用直接改名为函数名。可是这样做出现另外一个问题就是IDA的图表功能无法正常使用(正常时能显示某个CALL调用了什么API)。也不知道是不是我脚本写得不好,大家帮忙看看。希望大大们能给一点脱壳的思路。

#include <idc.idc>

static main() {
  auto Sbuffer,ea,zcount,filehandle;

filehandle = fopen("D:\out.txt","r");         我把OD提取的函数名保存在OUT.TXT中了。

for (ea = 0x14bcb0; zcount != 2; ea = ea + 4){     不同的DLL之间的函数地址由一个为0的DWORD分隔,所以写了一个循环,连续两个DWORD为0则结束重命名

        if (Dword(ea) !=0){
        Sbuffer = readstr(filehandle);
        MakeNameEx (ea,Sbuffer,SN_AUTO );
        zcount = 0;
                                }
        else{
        zcount = zcount + 1;
                }
                                                }

fclose(filehandle) ;
}

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 615
活跃值: (1377)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
功力不够,帮不上忙,等待牛人的出现。
2007-2-5 13:48
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
3
是个病毒就不试了

可以试试先给文件增加1个足够大的区段,hook VirtualAlloc使其把代码解到这个section
2007-2-5 19:41
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
4
最初由 softworm 发布
是个病毒就不试了

可以试试先给文件增加1个足够大的区段,hook VirtualAlloc使其把代码解到这个section


怎么我就忘记了可以这么做
2007-2-5 19:54
0
游客
登录 | 注册 方可回帖
返回