汇编分析-改c

 

10001819  |.  FF15 1C500210 CALL DWORD PTR DS:[<&kernel32.GetPrivate>; /GetPrivateProfileStringW
1000181F  |.  8BBC24 140800>MOV EDI,DWORD PTR SS:[ESP+814]
10001826  |.  33D2          XOR EDX,EDX
10001828  |.  85FF          TEST EDI,EDI
1000182A  |.  7E 60         JLE SHORT dump.1000188C
1000182C  |.  56            PUSH ESI
1000182D  |.  8BB424 0C0800>MOV ESI,DWORD PTR SS:[ESP+80C]
10001834  |>  0FB74494 08   /MOVZX EAX,WORD PTR SS:[ESP+EDX*4+8]
10001839  |.  83F8 41       |CMP EAX,41
1000183C  |.  7C 0B         |JL SHORT dump.10001849
1000183E  |.  83F8 46       |CMP EAX,46
10001841  |.  7F 06         |JG SHORT dump.10001849
10001843  |.  2C 37         |SUB AL,37
10001845  |.  8AC8          |MOV CL,AL
10001847  |.  EB 12         |JMP SHORT dump.1000185B
10001849  |>  83F8 30       |CMP EAX,30
1000184C  |.  7C 0B         |JL SHORT dump.10001859
1000184E  |.  83F8 39       |CMP EAX,39
10001851  |.  7F 06         |JG SHORT dump.10001859
10001853  |.  2C 30         |SUB AL,30
10001855  |.  8AC8          |MOV CL,AL
10001857  |.  EB 02         |JMP SHORT dump.1000185B
10001859  |>  32C9          |XOR CL,CL
1000185B  |>  0FB74494 0A   |MOVZX EAX,WORD PTR SS:[ESP+EDX*4+A]
10001860  |.  83F8 41       |CMP EAX,41
10001863  |.  7C 09         |JL SHORT dump.1000186E
10001865  |.  83F8 46       |CMP EAX,46
10001868  |.  7F 04         |JG SHORT dump.1000186E
1000186A  |.  2C 37         |SUB AL,37
1000186C  |.  EB 10         |JMP SHORT dump.1000187E
1000186E  |>  83F8 30       |CMP EAX,30
10001871  |.  7C 09         |JL SHORT dump.1000187C
10001873  |.  83F8 39       |CMP EAX,39
10001876  |.  7F 04         |JG SHORT dump.1000187C
10001878  |.  2C 30         |SUB AL,30
1000187A  |.  EB 02         |JMP SHORT dump.1000187E
1000187C  |>  32C0          |XOR AL,AL
1000187E  |>  C0E1 04       |SHL CL,4
10001881  |.  0AC8          |OR CL,AL
10001883  |.  880C32        |MOV BYTE PTR DS:[EDX+ESI],CL
10001886  |.  42            |INC EDX
10001887  |.  3BD7          |CMP EDX,EDI
10001889  |.^ 7C A9         /JL SHORT dump.10001834
1000188B  |.  5E            POP ESI
1000188C  |>  5F            POP EDI
1000188D  |.  81C4 00080000 ADD ESP,800
10001893  /.  C3            RETN

 

#include <stdio.h>
#include <string.h>
void main()
{
 unsigned short *pBuffer="5D71A66EDD43B3C4021B25D88B0C78DE1E3C53371F193930479E"
        "D0C293B272F70E618E5FE261746E33B09815086242B75105BCA2ED7790DD4EAC49E07E600011";
 char cl,save[100];
 int i=0,edi,j=0;
 edi=strlen(s);
 puts(s);
 printf("s len:%d/n",strlen(s));
 while(i<edi)
 {
  if(s[i]>='A'&&s[i]<='F')
  {
   s[i]-=0x37;
   cl=s[i];
  }
  else if(s[i]>='0'&&s[i]<='9')
  {
   s[i]-=0x30;
   cl=s[i];
  }
  else cl^=cl;
  if(s[i+2]>='A'&&s[i+2]<='F')
   s[i+2]-=0x37;
  else if(s[i+2]>='0'&&s[i+2]<='9')
   s[i+2]-=0x30;
  else s[i+2]^=s[i+2];
  cl<<=4;
  cl=cl|s[i+2];
  save[j++]=cl;
  i+=4;
  printf("%c",cl);
 }
 save[j]='/0';
 printf("/n");
}

#include <stdio.h>
void main()
{
 char s[]="5D71A66EDD43B3C4021B25D88B0C78DE1E3C53371F193930479ED0C293B272F70E6"
       "18E5FE261746E33B09815086242B75105BCA2ED7790DD4EAC49E07E600011";
 int a[128];
 for(int i=0;i<128;i++)
  a[i]=0;
 _asm
 {
  xor  edx,edx
  MOV EDI,0x80
t0:
  MOVZX EAX,WORD PTR SS:[ebp+edx*4-0x84]  //取字符
  cmp eax,0x41
        JL  SHORT t1
        CMP EAX,0x46
        JG  SHORT t1
        SUB AL,0x37
        MOV CL,AL
        JMP SHORT t3
t1:
  CMP EAX,0x30
        JL SHORT t2
        CMP EAX,0x39
        JG SHORT t2
        SUB AL,0x30
        MOV CL,AL
       JMP SHORT t3
t2:
  XOR CL,CL
t3:
  MOVZX EAX,WORD PTR SS:[ebp+edx*4-0x84+2]
        CMP EAX,0x41  
        JL SHORT t4
        CMP EAX,0x46
        JG SHORT t4
        SUB AL,0x37
        JMP SHORT t6
t4:
  CMP EAX,0x30
        JL SHORT t5
        CMP EAX,0x39
        JG SHORT t5
        SUB AL,0x30
        JMP SHORT t6
t5:     XOR AL,AL
t6:
  SHL CL,4
     OR CL,AL
  MOV BYTE PTR SS:[ebp+edx-0x218],CL
  inc edx
        CMP EDX,EDI
        JL SHORT t0
 }
 for(i=0;i<128;i++)
 printf("%c.",a[i]);
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值