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]);
}