能力值:
( LV8,RANK:130 )
|
-
-
4 楼
谢谢楼上的支持,可惜我这边文章太烂了,没有仔细分析,达到作者的要求,最近一直忙于笔试面试,等有时间再仔细的分析一下,对不住各位了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
LZ,教教我,跟我说说花指令,我不懂这个,
|
能力值:
( LV15,RANK:3306 )
|
-
-
10 楼
fenjianren
4683-1D47-9FCA-9DDB
执行流程:
1. [403448]=MM0;根据用户名计算出来的
[403450]=MM1;注册码
esi++;
11. tmp=[403448];//8个字节 从高到低12 34 56 78
[403448]=tmp换位后的; // 从高到低34 78 12 56
esi++;
15. [403448]=[403448] 循环右移5位;
esi++;
11. tmp=[403448];//8个字节 从高到低12 34 56 78
[403448]=tmp换位后的; // 从高到低34 78 12 56
esi++;
1F. [40343E]=[403450]; //[40343E]←注册码
esi++;
19. [403446]=[ESI+4034A2]; //[403446]←0x3D
esi+=3;
21. [40343E]=[40343E] 循环右移0x0B位;
esi++;//这一过程也可逆
29. MM0=[40343E]; //8个字节
//按照[403461]处的表从最后一个字节开始取MM0的每一位组成一个新的Qword
[40343E]=新的Qword;
esi++;//这一过程可逆
0B. [403458]=0;
[403446]--;
if ([403446]==0) [403458]++;//这句执行后循环结束
esi++;
3D. [403458]--;
if ([403458]!=0) si+=[ESI+4034A2],esi-=3;
esi+=3;//只执行这一句的话循环结束
循环回21.,次数为3D
30. if (flag!=0) something's wrong;
else {
[403458]=0;
if ([40343E]==[403448]) [403458]=1;//这里要执行
esi++;
}
3D. [403458]--;
if ([403458]!=0) si+=[ESI+4034A2],esi-=3;//不执行
esi+=3;
34. si+=[ESI+4034A2];
12. if (flag==0) success;
else something's wrong;
|
能力值:
( LV15,RANK:3306 )
|
-
-
11 楼
①00403461处的表改为
0x05,0x38,0x22,0x39,0x27,0x02,0x1B,0x30,0x07,0x3C,0x17,0x1C,0x00,0x15,0x03,0x37,
0x1A,0x32,0x19,0x12,0x33,0x0A,0x29,0x23,0x24,0x3B,0x3A,0x31,0x08,0x35,0x01,0x06,
0x3E,0x16,0x25,0x2A,0x2B,0x0C,0x11,0x04,0x2D,0x26,0x3D,0x20,0x09,0x14,0x0F,0x0B,
0x1F,0x18,0x28,0x13,0x21,0x34,0x3F,0x2C,0x0D,0x2F,0x2E,0x10,0x36,0x1D,0x0E,0x1E
②004034A1 45 56 01 11 15 11 1F 19 3D 00 21 29 0B 3D FD FF中的
21 29 0B改为29 21 0B
③0x40-0x0B=0x35;
00401814 PUSH 0B 改为 push 35
④
0040172C MOVQ MM3,QWORD PTR DS:[403450]
改为0040172C MOVQ MM3,QWORD PTR DS:[403448]
⑤
以上4步改完后在401871下断点
00401871 . 0F6F25 3E3440>MOVQ MM4,QWORD PTR DS:[40343E]
[40343E]即为用户名对应的注册码
哪位有兴趣可以给它弄个MessageBox
|
能力值:
( LV8,RANK:130 )
|
-
-
12 楼
风间仁兄正解,不知那hidemessage可以弄出来不,说句心里话,现在看到那循环配上移位的,潜意识中就感觉不可逆
|
能力值:
( LV9,RANK:160 )
|
-
-
14 楼
厉害,这可是VERY HARD级别的....
作者居然说是日本论坛......真....侮辱啊..
|