首页
社区
课程
招聘
[讨论]ccfer-cm2009讨论
2009-10-1 23:37 9577

[讨论]ccfer-cm2009讨论

2009-10-1 23:37
9577
收藏
点赞7
打赏
分享
最新回复 (15)
雪    币: 19
活跃值: (102)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
不死神鸟 1 2009-10-2 03:56
2
0
vm..................
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
x敏m 2009-10-2 09:25
3
0
surport!!!
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2009-10-2 11:22
4
0
这个附件去花去vm了:
上传的附件:
雪    币: 107
活跃值: (1417)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
frozenrain 2009-10-2 11:58
5
0
和upx-d结果不同,是没加VM的,不是加了后去掉VM的
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-10-2 12:18
6
0
这个以后校验用吧,以后再研究算法,算法估计搞不定。先看能不能还原vm
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-10-2 12:25
7
0
vm_optalbe地址还原idc脚本
#include <idc.idc>

static decrypt(from,size) 
{
  auto i;
  auto value;
  for ( i=0; i < size; i=i+1 ) 
  {
    value=Dword(from+i*4);
    Message("%x:%x",from+i*4,value);
    if(value!=0)
    {
        value++;
        Message("=>%x",value);
        value=rotate_dword(value,30);
        Message("=>%x",value);
        value=value^0xffffffff;
        Message("=>%x",value);
        value=value^0x7AC2D8AA;
        Message("=>%x",value);
        if(value!=BADADDR)
        {
    	  //MakeNameEx(value,form("vm_opcode_%d",i),0x100);
    	  //MakeRptCmt(from+i*4,form("%08x",value));
                  PatchDword(from+i*4,value);
        }
    }
  }
}

static main(void) {
  auto vm_table_addr;
  vm_table_addr = 0x406000;
  //vm_table_addr = AskAddr(here, "Please enter the vm_table_addr");
  //vm_table_addr = ScreenEA();
  if ( vm_table_addr == BADADDR ) return;
  decrypt(vm_table_addr,256);
}
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-10-2 19:45
8
0
用cc提供的注册码,跟了遍注册流程,后面都是猜测的,以后修正.类c表示如下。

#define ROL(val,n)   ((val>>(32-n))|(val<<n))

DWORD size[8]={0x1620,0x973,0x1402,0x1438,0x9a9,0x14a3,0x14d9,0xc9c,0xd19};
DWORD keycrc=0x0;//40440c
DWORD baseptr=0x401000;
DWORD crcval=0;

unsigned char name[16]="shellwolf";
unsigned char sn[60]="1C1A9961EBFC090050F1D2FA9B5F272C92D51E590D7A37576EAEB80000";//12d7f0
DWORD nameval;
int namelen,snlen;
BYTE snx[1000];
BYTE  buff[1032];

void onbtnclick()
{
    int tmpi;

    //1.crc=>keysrc
    for(tmpi=0;tmpi<7;tmpi++)
    {
        crcval=crc32(baseptr,size[i]);//E779BC52//4386092B
        crcval=~crcval;//188643AD//BC79F6D4
        keycrc^=crcval;//188643AD
        keycrc+=size[i]+baseptr-0x100;//18C668CD
    }

    //2.getname
    nameval=0x0;//keycrc=0x7a08383e;
    namelen=GetDlgItemText(IDC_name,&name[0],);//0x3e8
    if(namelen<3||namelen>0x20)
        return;
    //namehash
    for(tmpi=0;tmpi<namelen;tmpi++)//401a39
    {
        nameval+=name[tmpi];
        nameval=ROL(nameval,3)^keycrc;
    }//nameval=0x50356f68

    //3.getsn
    snlen=GetDlgItemText(IDC_sn,&sn[0],);//0x3e9
    if(snlen<0x10||snlen>0x40)
        return;
    for(tmpi=0;tmpi<snlen;tmpi++)//401966
    {
        if(!isxdigit(sn[tmpi]))
            return;
    }

    //4.set buff for vm
    memset(&snx[0],0,996);//0x12d40c
    memset(&buff[0],0,1032);//0x12d004
    for(tmpi=0;tmpi<snlen/2;tmpi++)
        sscanf(&sn[tmpi*2],"%02x",&snx[tmpi]);
    if((snlen/2-1)!=snx[0])
        return;
    else
        buff[0]=snx[0];//snlen/2-1
    //5.crc & vm1
    for(tmpi=7;tmpi<8;tmpi++)//401b97//1993?401110
    {
        crcval=crc32(baseptr,size[tmpi]);
        crcval=~crcval;
        keycrc^=crcval;//EDDEEA7F
        keycrc+=size[tmpi]+baseptr-0x100;//EE1F061B
    }
    enter_vm(0xCD1BD9CD);//4020d6
    //6.crc & vm2
    for(tmpi=8;tmpi<9;tmpi++)
    {
        crcval=crc32(baseptr,size[tmpi]);////778b992d
        crcval=~crcval;////887466D2
        keycrc^=crcval;//666B60C9
        keycrc+=size[tmpi]+baseptr-0x100;//66AB7CE2
    }
    if(enter_vm(0xA78AD9CD)==0x00)//00407384=>402400
        return;
    //7.messgebox
    if(*(DWORD *)(&buff[0])==nameval)
    {
        strcpy(&sn[0],"pediy cm 2009");
        MessageBoxA(&buff[8],&sn[0],0);//0x12d00c
    }
}

vm_optable,可能很多不对,都时猜的,只是个临时标记。好像以前跟过这个版本的,vmp1.65?

UPX0:00406000 vm_optable      dd offset vm_pushimm    ; 0 ; DATA XREF: sub_4066E7+F72r
UPX0:00406000                                         ; UPX0:00407C3Fr ...
UPX0:00406000                 dd offset vm_imul       ; 1
UPX0:00406000                 dd offset vm_retn       ; 2
UPX0:00406000                 dd offset vm_shr        ; 3
UPX0:00406000                 dd offset vm_movb_B_AA  ; 4
UPX0:00406000                 dd offset vm_pushb_reg  ; 5
UPX0:00406000                 dd offset vm_shlf       ; 6
UPX0:00406000                 dd offset vm_mov_AA_A1  ; 7
UPX0:00406000                 dd offset vm_shiftadd   ; 8
UPX0:00406000                 dd offset vm_pop_reg    ; 9
UPX0:00406000                 dd offset vm_movb_B_AA_0; 10
UPX0:00406000                 dd offset vm_movw_AA_A  ; 11
UPX0:00406000                 dd offset vm_mov_AA_A   ; 12
UPX0:00406000                 dd offset vm_movb_B_AA_0; 13
UPX0:00406000                 dd offset vm_rdtsc      ; 14
UPX0:00406000                 dd offset vm_shrd       ; 15
UPX0:00406000                 dd offset vm_pushespw_0 ; 16
UPX0:00406000                 dd offset vm_imul       ; 17
UPX0:00406000                 dd offset vm_shlf       ; 18
UPX0:00406000                 dd offset vm_addb_A_B   ; 19
UPX0:00406000                 dd offset vm_pushimmw   ; 20
UPX0:00406000                 dd offset vm_popw_reg   ; 21
UPX0:00406000                 dd offset vm_shiftadd   ; 22
UPX0:00406000                 dd offset vm_push_immb  ; 23
UPX0:00406000                 dd offset vm_rdtsc      ; 24
UPX0:00406000                 dd offset vm_mov_AA_A   ; 25
UPX0:00406000                 dd offset vm_pushimm    ; 26
UPX0:00406000                 dd offset vm_mov_AA_A   ; 27
UPX0:00406000                 dd offset vm_divw       ; 28
UPX0:00406000                 dd offset vm_mov_AA_B   ; 29
UPX0:00406000                 dd offset vm_shlb       ; 30
UPX0:00406000                 dd offset loc_40721F    ; 31
UPX0:00406000                 dd offset vm_popx       ; 32
UPX0:00406000                 dd offset vm_shiftadd   ; 33
UPX0:00406000                 dd offset vm_popx       ; 34
UPX0:00406000                 dd offset vm_nand       ; 35
UPX0:00406000                 dd offset vm_popx       ; 36
UPX0:00406000                 dd offset vm_popw_reg   ; 37
UPX0:00406000                 dd offset vm_popx       ; 38
UPX0:00406000                 dd offset vm_imul       ; 39
UPX0:00406000                 dd offset vm_popx       ; 40
UPX0:00406000                 dd offset vm_mov_B_AA   ; 41
UPX0:00406000                 dd offset vm_popx       ; 42
UPX0:00406000                 dd offset vm_shld       ; 43
UPX0:00406000                 dd offset vm_popx       ; 44
UPX0:00406000                 dd offset vm_nandb      ; 45
UPX0:00406000                 dd offset vm_popx       ; 46
UPX0:00406000                 dd offset vm_nandw      ; 47
UPX0:00406000                 dd offset vm_popx       ; 48
UPX0:00406000                 dd offset vm_mov_AA_A   ; 49
UPX0:00406000                 dd offset vm_popx       ; 50
UPX0:00406000                 dd offset vm_push_esp   ; 51
UPX0:00406000                 dd offset vm_popx       ; 52
UPX0:00406000                 dd offset vm_pushespw_0 ; 53
UPX0:00406000                 dd offset vm_popx       ; 54
UPX0:00406000                 dd offset vm_mul        ; 55
UPX0:00406000                 dd offset vm_popx       ; 56
UPX0:00406000                 dd offset vm_pushw_reg  ; 57
UPX0:00406000                 dd offset vm_popx       ; 58
UPX0:00406000                 dd offset vm_movb_AA_A  ; 59
UPX0:00406000                 dd offset vm_popx       ; 60
UPX0:00406000                 dd offset vm_shlf       ; 61
UPX0:00406000                 dd offset vm_popx       ; 62
UPX0:00406000                 dd offset vm_rdtsc      ; 63
UPX0:00406000                 dd offset vm_pushx      ; 64
UPX0:00406000                 dd offset vm_shrd       ; 65
UPX0:00406000                 dd offset vm_pushx      ; 66
UPX0:00406000                 dd offset vm_pushimmw   ; 67
UPX0:00406000                 dd offset vm_pushx      ; 68
UPX0:00406000                 dd offset vm_pushimm    ; 69
UPX0:00406000                 dd offset vm_pushx      ; 70
UPX0:00406000                 dd offset vm_movw_AA_A_0; 71
UPX0:00406000                 dd offset vm_pushx      ; 72
UPX0:00406000                 dd offset vm_push_immb  ; 73
UPX0:00406000                 dd offset vm_pushx      ; 74
UPX0:00406000                 dd offset vm_popw_reg   ; 75
UPX0:00406000                 dd offset vm_pushx      ; 76
UPX0:00406000                 dd offset vm_mulw       ; 77
UPX0:00406000                 dd offset vm_pushx      ; 78
UPX0:00406000                 dd offset vm_movw_B_AA  ; 79
UPX0:00406000                 dd offset vm_pushx      ; 80
UPX0:00406000                 dd offset vm_shlw       ; 81
UPX0:00406000                 dd offset vm_pushx      ; 82
UPX0:00406000                 dd offset vm_shrb       ; 83
UPX0:00406000                 dd offset vm_pushx      ; 84
UPX0:00406000                 dd offset vm_pushimm    ; 85
UPX0:00406000                 dd offset vm_pushx      ; 86
UPX0:00406000                 dd offset vm_pushw_immw ; 87
UPX0:00406000                 dd offset vm_pushx      ; 88
UPX0:00406000                 dd offset vm_pushimmw   ; 89
UPX0:00406000                 dd offset vm_pushx      ; 90
UPX0:00406000                 dd offset vm_addw_A_B   ; 91
UPX0:00406000                 dd offset vm_pushx      ; 92
UPX0:00406000                 dd offset vm_shld       ; 93
UPX0:00406000                 dd offset vm_pushx      ; 94
UPX0:00406000                 dd offset vm_shr        ; 95
UPX0:00406000                 dd offset vm_shrw       ; 96
UPX0:00406000                 dd offset vm_rdtsc      ; 97
UPX0:00406000                 dd offset vm_mul        ; 98
UPX0:00406000                 dd offset vm_shrb       ; 99
UPX0:00406000                 dd offset vm_movb_B_AA  ; 100
UPX0:00406000                 dd offset vm_jmp        ; 101
UPX0:00406000                 dd offset vm_movb_B_AA_0; 102
UPX0:00406000                 dd offset vm_shlf       ; 103
UPX0:00406000                 dd offset vm_shld       ; 104
UPX0:00406000                 dd offset vm_shlb       ; 105
UPX0:00406000                 dd offset vm_pop_reg    ; 106
UPX0:00406000                 dd offset vm_imul       ; 107
UPX0:00406000                 dd offset vm_shlb       ; 108
UPX0:00406000                 dd offset vm_movb_B_AA_0; 109
UPX0:00406000                 dd offset loc_40721F    ; 110
UPX0:00406000                 dd offset vm_shrw       ; 111
UPX0:00406000                 dd offset vm_imul       ; 112
UPX0:00406000                 dd offset vm_addf_a_b   ; 113
UPX0:00406000                 dd offset vm_shlb       ; 114
UPX0:00406000                 dd offset vm_shlb       ; 115
UPX0:00406000                 dd offset vm_retn       ; 116
UPX0:00406000                 dd offset vm_movw_AA_A  ; 117
UPX0:00406000                 dd offset vm_movb_AA_A  ; 118
UPX0:00406000                 dd offset vm_pop_reg    ; 119
UPX0:00406000                 dd offset vm_shrd       ; 120
UPX0:00406000                 dd offset vm_nandb      ; 121
UPX0:00406000                 dd offset vm_addw_A_B   ; 122
UPX0:00406000                 dd offset vm_nandb      ; 123
UPX0:00406000                 dd offset vm_movb_B_AA_0; 124
UPX0:00406000                 dd offset vm_shrd       ; 125
UPX0:00406000                 dd offset vm_nandb      ; 126
UPX0:00406000                 dd offset vm_shrw       ; 127
UPX0:00406000                 dd offset vm_addf_a_b   ; 128
UPX0:00406000                 dd offset vm_nandb      ; 129
UPX0:00406000                 dd offset vm_shrd       ; 130
UPX0:00406000                 dd offset vm_movw_B_AA_0; 131
UPX0:00406000                 dd offset vm_mulw       ; 132
UPX0:00406000                 dd offset vm_shiftadd   ; 133
UPX0:00406000                 dd offset vm_shlf       ; 134
UPX0:00406000                 dd offset vm_shrw       ; 135
UPX0:00406000                 dd offset vm_shrw       ; 136
UPX0:00406000                 dd offset vm_pushimm    ; 137
UPX0:00406000                 dd offset vm_shiftadd   ; 138
UPX0:00406000                 dd offset vm_movw_AA_A_0; 139
UPX0:00406000                 dd offset vm_movw_B_AA_0; 140
UPX0:00406000                 dd offset vm_pushimm    ; 141
UPX0:00406000                 dd offset vm_movb_AA_A  ; 142
UPX0:00406000                 dd offset vm_movw_B_AA  ; 143
UPX0:00406000                 dd offset vm_shld       ; 144
UPX0:00406000                 dd offset vm_movw_B_AA  ; 145
UPX0:00406000                 dd offset vm_movw_AA_A  ; 146
UPX0:00406000                 dd offset vm_imul       ; 147
UPX0:00406000                 dd offset vm_addw_A_B   ; 148
UPX0:00406000                 dd offset vm_nandb      ; 149
UPX0:00406000                 dd offset vm_movw_AA_A_1; 150
UPX0:00406000                 dd offset vm_pushespw   ; 151
UPX0:00406000                 dd offset vm_addw_A_B   ; 152
UPX0:00406000                 dd offset vm_shr        ; 153
UPX0:00406000                 dd offset vm_movw_AA_A_0; 154
UPX0:00406000                 dd offset vm_movb_B_AA  ; 155
UPX0:00406000                 dd offset vm_shrb       ; 156
UPX0:00406000                 dd offset vm_mulw       ; 157
UPX0:00406000                 dd offset vm_mov_AA_A   ; 158
UPX0:00406000                 dd offset vm_nand       ; 159
UPX0:00406000                 dd offset vm_addf_a_b   ; 160
UPX0:00406000                 dd offset vm_pushespw   ; 161
UPX0:00406000                 dd offset vm_shlb       ; 162
UPX0:00406000                 dd offset vm_shlb       ; 163
UPX0:00406000                 dd offset vm_shrb       ; 164
UPX0:00406000                 dd offset loc_40721F    ; 165
UPX0:00406000                 dd offset vm_shrb       ; 166
UPX0:00406000                 dd offset vm_shrw       ; 167
UPX0:00406000                 dd offset vm_mov_AA_A   ; 168
UPX0:00406000                 dd offset vm_pushb_reg  ; 169
UPX0:00406000                 dd offset vm_addw_A_B   ; 170
UPX0:00406000                 dd offset vm_pushespw_0 ; 171
UPX0:00406000                 dd offset loc_40721F    ; 172
UPX0:00406000                 dd offset vm_addw_A_B   ; 173
UPX0:00406000                 dd offset vm_movw_AA_A_1; 174
UPX0:00406000                 dd offset vm_pushw_reg  ; 175
UPX0:00406000                 dd offset vm_movb_AA_A  ; 176
UPX0:00406000                 dd offset vm_movb_B_AA  ; 177
UPX0:00406000                 dd offset vm_mov_AA_A   ; 178
UPX0:00406000                 dd offset vm_addw_A_B   ; 179
UPX0:00406000                 dd offset vm_jmp        ; 180
UPX0:00406000                 dd offset vm_pushw_immw ; 181
UPX0:00406000                 dd offset vm_shlf       ; 182
UPX0:00406000                 dd offset vm_pushimm    ; 183
UPX0:00406000                 dd offset vm_divw       ; 184
UPX0:00406000                 dd offset vm_mul        ; 185
UPX0:00406000                 dd offset vm_mov_AA_A   ; 186
UPX0:00406000                 dd offset vm_shlb       ; 187
UPX0:00406000                 dd offset vm_movw_B_AA  ; 188
UPX0:00406000                 dd offset vm_mov_B_AA   ; 189
UPX0:00406000                 dd offset vm_popw_reg   ; 190
UPX0:00406000                 dd offset vm_retn       ; 191
UPX0:00406000                 dd offset vm_pushespw   ; 192
UPX0:00406000                 dd offset vm_shr        ; 193
UPX0:00406000                 dd offset vm_movw_AA_A_0; 194
UPX0:00406000                 dd offset vm_pushimmw   ; 195
UPX0:00406000                 dd offset vm_pushb_reg  ; 196
UPX0:00406000                 dd offset vm_shiftadd   ; 197
UPX0:00406000                 dd offset vm_shlf       ; 198
UPX0:00406000                 dd offset vm_shld       ; 199
UPX0:00406000                 dd offset vm_shlf       ; 200
UPX0:00406000                 dd offset vm_pushesp    ; 201
UPX0:00406000                 dd offset vm_retn       ; 202
UPX0:00406000                 dd offset vm_push_esp   ; 203
UPX0:00406000                 dd offset vm_shiftadd   ; 204
UPX0:00406000                 dd offset vm_push_esp   ; 205
UPX0:00406000                 dd offset vm_pushb_reg  ; 206
UPX0:00406000                 dd offset vm_movw_AA_A_1; 207
UPX0:00406000                 dd offset vm_movw_B_AA  ; 208
UPX0:00406000                 dd offset vm_popw_reg   ; 209
UPX0:00406000                 dd offset vm_movw_AA_A  ; 210
UPX0:00406000                 dd offset vm_movw_B_AA  ; 211
UPX0:00406000                 dd offset vm_shlb       ; 212
UPX0:00406000                 dd offset vm_movw_AA_A_1; 213
UPX0:00406000                 dd offset vm_shrb       ; 214
UPX0:00406000                 dd offset vm_push_esp   ; 215
UPX0:00406000                 dd offset vm_movw_B_AA_0; 216
UPX0:00406000                 dd offset vm_movw_B_AA_0; 217
UPX0:00406000                 dd offset vm_movb_B_AA_0; 218
UPX0:00406000                 dd offset vm_mov_B_AA   ; 219
UPX0:00406000                 dd offset vm_shlw       ; 220
UPX0:00406000                 dd offset vm_addf_a_b   ; 221
UPX0:00406000                 dd offset vm_shrb       ; 222
UPX0:00406000                 dd offset vm_movb_AA_A  ; 223
UPX0:00406000                 dd offset vm_imul       ; 224
UPX0:00406000                 dd offset vm_movb_AA_A  ; 225
UPX0:00406000                 dd offset vm_pushespw   ; 226
UPX0:00406000                 dd offset vm_mov_AA_A   ; 227
UPX0:00406000                 dd offset vm_divw       ; 228
UPX0:00406000                 dd offset vm_divw       ; 229
UPX0:00406000                 dd offset vm_movw_AA_A_0; 230
UPX0:00406000                 dd offset vm_shlf       ; 231
UPX0:00406000                 dd offset vm_rdtsc      ; 232
UPX0:00406000                 dd offset vm_movw_AA_A_0; 233
UPX0:00406000                 dd offset vm_mov_B_AA   ; 234
UPX0:00406000                 dd offset vm_mov_AA_A1  ; 235
UPX0:00406000                 dd offset vm_movw_B_AA  ; 236
UPX0:00406000                 dd offset vm_pushimmw   ; 237
UPX0:00406000                 dd offset vm_pop_reg    ; 238
UPX0:00406000                 dd offset vm_jmp        ; 239
UPX0:00406000                 dd offset vm_nandw      ; 240
UPX0:00406000                 dd offset vm_addb_A_B   ; 241
UPX0:00406000                 dd offset vm_mulw       ; 242
UPX0:00406000                 dd offset vm_movw_AA_A_0; 243
UPX0:00406000                 dd offset vm_push_immb  ; 244
UPX0:00406000                 dd offset vm_movb_B_AA_0; 245
UPX0:00406000                 dd offset vm_jmp        ; 246
UPX0:00406000                 dd offset vm_pop_reg    ; 247
UPX0:00406000                 dd offset vm_shld       ; 248
UPX0:00406000                 dd offset vm_movw_AA_A  ; 249
UPX0:00406000                 dd offset vm_shrd       ; 250
UPX0:00406000                 dd offset vm_mov_AA_A1  ; 251
UPX0:00406000                 dd offset vm_pushespw   ; 252
UPX0:00406000                 dd offset vm_shlf       ; 253
UPX0:00406000                 dd offset vm_mov_AA_A1  ; 254
UPX0:00406000                 dd offset vm_nandb      ; 255


自言自语?:(
发现两个奇怪的vm指令,vm_rdtsc,和vm_shiftadd.
rdtsc似乎只有几个用处,1、随机数,2、反调试
shiftadd用于代码自校验?
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-10-2 22:35
9
0
帮老哥及老哥的老婆顶一下帖

你上面列出的256个你全进去看了一次标出来的 ?
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-10-2 22:41
10
0
lp不喜欢crack。
其实没有256个。就几十个。多数是ida下猜的,有些猜不出来,就用OD跟了下。
还没敢进vm里看看,一直在犹豫,精力有限,怕进去后耽误太多时间。
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-10-2 22:51
11
0
目前大家都是卡在多条的VM指令换成一个适当的PCode
这技术若没人发布的话, 永远都是人肉

看VM..我很懒,连标都不标. 白吃简单型的算法还能在脑中半懂半猜
再上去...战斗力'幸运度'智力都下降为0了

一起等吧.
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-10-2 23:10
12
0
高版本的vmp可降级为vmp1.2,vmp1.2的可以多条转单条。
高手都不标,看内存变化就可以了,我也期望能这样。我只能笨方法,标签转到od下,再用脚本看流程。
有点疲惫,今天不看了。明天后天上不了网,假期要被这个cm折磨了。
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-10-2 23:13
13
0
另外, 比赛放出的exe我在VM里有看到:

序号 -> 十六进制 , 第0个byte的作用就如你列出的程序码  :
  if((snlen/2-1)!=snx[0])

再下去有 sn[1]= sn[1]^sn[最后]     
           sn[2]= sn[2]^sn[最后-1]
           sn[3]= sn[3]^sn[最后-2]
          .....
           ....
          and 另一个byte的 xor
(东西全删了, xor 的 i 可能不是写得完全正确, 但大体上我有看到这动作.)

可是你上面的程序码里并没写出这步, 是我看错了 ?
雪    币: 2314
活跃值: (129)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 10 2009-10-2 23:22
14
0
[QUOTE=sessiondiy;694881]另外, 比赛放出的exe我在VM里有看到:

序号 -> 十六进制 , 第0个byte的作用就如你列出的程序码  :
  if((snlen/2-1)!=snx[0])

再下去有 sn[1]= sn[1]^sn[最后]     
           sn[2]= sn[2]^sn[最后-1]
...[/QUOTE]

你应该不会看错,我还没进vm里,你看到的估计都在vm里。多谢,我去看看。
“if((snlen/2-1)!=snx[0])”这个应该是在vm外。
雪    币: 12118
活跃值: (3282)
能力值: ( LV15,RANK:1565 )
在线值:
发帖
回帖
粉丝
AloneWolf 3 2009-10-3 01:05
15
0
玩这个一个字"累"...无奈...水平有限...玩不动...只有看大虾们表演了...
大虾们Go On And ,.On...
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-10-3 13:33
16
0
有系统的整理是正确的, 期待你假期之后的成果分享

VMP的动作都是固定的.
用滴猎Dbg的无限断点应该就好还原原始指令动作了.

f-.- 忘了滴猎有没有支援脚本

rdtsc我曾见过用于ANTI, 在rdtsc之前会先判断即将要调用的API的第一个Byte是否为CC (全被VM了)
(我看的VMP Target没几个,所以是否VMP自动加入的ANTI我就不知了)
游客
登录 | 注册 方可回帖
返回