int
ary[]
=
{
0x8000C
,
0x8008C
,
0x8004C
,
0x800CC
,
0x8002C
,
0x800AC
,
0x8006C
,
0x800EC
,
0x8001C
,
0x8009C
,
0x8005C
,
0x800DC
,
0x8003C
,
0x800BC
,
0x8007C
,
0x800FC
,
0x80002
,
0x80082
,
0x80042
,
0x800C2
,
0x80022
,
0x800A2
,
0x80062
,
0x800E2
,
0x80012
,
0x80092
,
0x80052
,
0x800D2
,
0x80032
,
0x800B2
,
0x80072
,
0x800F2
,
0x8000A
,
0x8008A
,
0x8004A
,
0x800CA
,
0x8002A
,
0x800AA
,
0x8006A
,
0x800EA
,
0x8001A
,
0x8009A
,
0x8005A
,
0x800DA
,
0x8003A
,
0x800BA
,
0x8007A
,
0x800FA
,
0x80006
,
0x80086
,
0x80046
,
0x800C6
,
0x80026
,
0x800A6
,
0x80066
,
0x800E6
,
0x80016
,
0x80096
,
0x80056
,
0x800D6
,
0x80036
,
0x800B6
,
0x80076
,
0x800F6
,
0x8000E
,
0x8008E
,
0x8004E
,
0x800CE
,
0x8002E
,
0x800AE
,
0x8006E
,
0x800EE
,
0x8001E
,
0x8009E
,
0x8005E
,
0x800DE
,
0x8003E
,
0x800BE
,
0x8007E
,
0x800FE
,
0x80001
,
0x80081
,
0x80041
,
0x800C1
,
0x80021
,
0x800A1
,
0x80061
,
0x800E1
,
0x80011
,
0x80091
,
0x80051
,
0x800D1
,
0x80031
,
0x800B1
,
0x80071
,
0x800F1
,
0x80009
,
0x80089
,
0x80049
,
0x800C9
,
0x80029
,
0x800A9
,
0x80069
,
0x800E9
,
0x80019
,
0x80099
,
0x80059
,
0x800D9
,
0x80039
,
0x800B9
,
0x80079
,
0x800F9
,
0x80005
,
0x80085
,
0x80045
,
0x800C5
,
0x80025
,
0x800A5
,
0x80065
,
0x800E5
,
0x80015
,
0x80095
,
0x80055
,
0x800D5
,
0x80035
,
0x800B5
,
0x80075
,
0x800F5
,
0x8000D
,
0x8008D
,
0x8004D
,
0x800CD
,
0x8002D
,
0x800AD
,
0x8006D
,
0x800ED
,
0x8001D
,
0x8009D
,
0x8005D
,
0x800DD
,
0x8003D
,
0x800BD
,
0x8007D
,
0x800FD
,
0x90013
,
0x90113
,
0x90093
,
0x90193
,
0x90053
,
0x90153
,
0x900D3
,
0x901D3
,
0x90033
,
0x90133
,
0x900B3
,
0x901B3
,
0x90073
,
0x90173
,
0x900F3
,
0x901F3
,
0x9000B
,
0x9010B
,
0x9008B
,
0x9018B
,
0x9004B
,
0x9014B
,
0x900CB
,
0x901CB
,
0x9002B
,
0x9012B
,
0x900AB
,
0x901AB
,
0x9006B
,
0x9016B
,
0x900EB
,
0x901EB
,
0x9001B
,
0x9011B
,
0x9009B
,
0x9019B
,
0x9005B
,
0x9015B
,
0x900DB
,
0x901DB
,
0x9003B
,
0x9013B
,
0x900BB
,
0x901BB
,
0x9007B
,
0x9017B
,
0x900FB
,
0x901FB
,
0x90007
,
0x90107
,
0x90087
,
0x90187
,
0x90047
,
0x90147
,
0x900C7
,
0x901C7
,
0x90027
,
0x90127
,
0x900A7
,
0x901A7
,
0x90067
,
0x90167
,
0x900E7
,
0x901E7
,
0x90017
,
0x90117
,
0x90097
,
0x90197
,
0x90057
,
0x90157
,
0x900D7
,
0x901D7
,
0x90037
,
0x90137
,
0x900B7
,
0x901B7
,
0x90077
,
0x90177
,
0x900F7
,
0x901F7
,
0x9000F
,
0x9010F
,
0x9008F
,
0x9018F
,
0x9004F
,
0x9014F
,
0x900CF
,
0x901CF
,
0x9002F
,
0x9012F
,
0x900AF
,
0x901AF
,
0x9006F
,
0x9016F
,
0x900EF
,
0x901EF
,
0x9001F
,
0x9011F
,
0x9009F
,
0x9019F
,
0x9005F
,
0x9015F
,
0x900DF
,
0x901DF
,
0x9003F
,
0x9013F
,
0x900BF
,
0x901BF
,
0x9007F
,
0x9017F
,
0x900FF
,
0x901FF
,
0x70000
,
0x70040
,
0x70020
,
0x70060
,
0x70010
,
0x70050
,
0x70030
,
0x70070
,
0x70008
,
0x70048
,
0x70028
,
0x70068
,
0x70018
,
0x70058
,
0x70038
,
0x70078
,
0x70004
,
0x70044
,
0x70024
,
0x70064
,
0x70014
,
0x70054
,
0x70034
,
0x70074
,
0x80003
,
0x80083
,
0x80043
,
0x800C3
,
0x80023
,
0x800A3
,
0x80063
,
0x800E3
,
0x50000
,
0x50010
,
0x50008
,
0x50018
,
0x50004
,
0x50014
,
0x5000C
,
0x5001C
,
0x50002
,
0x50012
,
0x5000A
,
0x5001A
,
0x50006
,
0x50016
,
0x5000E
,
0x5001E
,
0x50001
,
0x50011
,
0x50009
,
0x50019
,
0x50005
,
0x50015
,
0x5000D
,
0x5001D
,
0x50003
,
0x50013
,
0x5000B
,
0x5001B
,
0x50007
,
0x50017
};
void test() {
/
/
最终结果
/
/
CC840A00
75
8F
3E
3C
9C
5C
E1
79
2D
3B
25
93
12
B6 A9
8A
u.><.\...;
%
.....
/
/
CC840A10
40
59
AB
04
B1
7A
25
73
00
74
69
76
69
74
79
00
@Y...z
%
s.tivity.
char
input
[
0x19
]
=
{
0x65
,
0x6c
,
0x44
,
0x49
,
0x6b
,
0x62
,
0x61
,
0x4b
,
0x69
,
0x74
,
0x5f
,
0x70
,
0x65
,
0x64
,
0x69
,
0x79
,
0x5f
,
0x69
,
0x6d
,
0x79
,
0x61
,
0x6e
,
0x67
,
0x5f
,
0x00
};
/
/
char
input
[
0x19
]
=
{
0x6a
,
0x6b
,
0x4c
,
0x4d
,
0x6e
,
0x6f
,
0x60
,
0x41
,
0x62
,
0x73
,
0x54
,
0x75
,
0x66
,
0x67
,
0x68
,
0x79
,
0x5a
,
0x6b
,
0x6c
,
0x7d
,
0x6e
,
0x6f
,
0x60
,
0x51
};
char output[
0x64
]
=
{
0
};
/
/
d65df440
4b
cd
71
f1 cc
4e
4a
f4 ce
2c
89
2f
48
4d
c9 ac K.q..NJ..,.
/
HM..
/
/
d65df450
8c
cf cc ad
4c
cc
4b
8f
07
00
00
00
00
00
00
00
....L.K.........
unsigned char inputTmp[
0x19
]
=
{
0x78
,
0xda
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
};
int
i
=
0
;
for
(
int
i
=
0
; i<strlen(
input
); i
=
i
+
2
) {
unsigned short
*
tbTmp
=
(unsigned short
*
)&ary[
input
[i]];
unsigned short t1
=
tbTmp[
0
];
unsigned short t2
=
tbTmp[
1
];
unsigned
int
v10
=
0
;
/
/
????
unsigned
int
v18
=
0x0003
;
/
/
?????
unsigned
int
v115
=
t1;
/
/
取表下面 D489ABE6
unsigned
int
v110
=
t2;
if
(i
-
1
>
=
0
) {
tbTmp
=
(unsigned short
*
)&ary[
input
[i
-
1
]];
t1
=
tbTmp[
0
];
t2
=
tbTmp[
1
];
}
unsigned
int
v15
=
t1;
unsigned
int
v19
=
i
-
1
>
=
0
? (v15 >> (
16
-
(v110
+
v18))) :
0x3
;
/
/
D489A6DC
+
C32
unsigned
int
v109
=
((v115 << v18) & v10 | v10 ^ (v115 << v18))^v19;
/
/
D489B10C
tbTmp
=
(unsigned short
*
)&ary[
input
[i
+
1
]];
t1
=
tbTmp[
0
];
t2
=
tbTmp[
1
];
unsigned short v116
=
t2;
/
/
取表上面
0x008
D489ABFC
unsigned
int
v63
=
0x0003
;
/
/
D489B31E ??????
unsigned
int
v118
=
v63
+
v116;
/
/
0x000B
D489B118
unsigned
int
v70
=
t1;
/
/
取表下面
unsigned
int
v71
=
(v70 << v118) & v109 | v109 ^ (v70 << v118);
/
/
D489B2D4
tbTmp
=
(unsigned short
*
)&v71;
t1
=
tbTmp[
0
];
t2
=
tbTmp[
1
];
LOGI(
"xxxxxxxTmp %0x %0x"
, t1, t2);
memcpy(inputTmp
+
i
+
2
, &t1,
2
);
}
for
(
int
i
=
0
; i<strlen(
input
); i
+
+
) {
LOGI(
"xxxxxxx %0x"
, inputTmp[i]);
}
/
/
CC840A00
78
DA
4B
CD
71
F1 CC
4E
4A
F4 CE
2C
89
2F
48
4D
x............
/
HM
/
/
CC840A10 C9 AC
8C
CF CC AD
4C
CC
00
74
69
76
69
74
79
00
ɬ ....L..tivity.
/
/
unsigned char temp[
0x64
]
=
{
0x78
,
0xDA
,
0x4B
,
0xCD
,
0x71
,
0xF1
,
0xCC
,
0x4E
,
0x4A
,
0xF4
,
0xCE
,
0x2C
,
0x89
,
0x2F
,
0x48
,
0x4D
,
0xC9
,
0xAC
,
0x8C
,
0xCF
,
0xCC
,
0xAD
,
0x4C
,
0xCC
};
for
(
int
i
=
2
; i <
0x18
; i
+
+
){
int
v94
=
((inputTmp[i] &
0x64
)
+
(~inputTmp[i] &
0x9B
)) ^ (((
2
*
output[i
-
1
]
+
117
) &
0x64
)
+
(~(
2
*
output[i
-
1
]
+
117
) &
0x9B
));
output[i]
=
v94;
LOGI(
"v94 = : %0x\n"
, v94);
}
output[
0
]
=
0x75
;
output[
1
]
=
0x8f
;
}