-
-
Confusion about tElock 0.98
-
发表于:
2004-10-5 12:09
4096
-
Confusion about tElock 0.98
tElock外壳中有一段代码在堆栈中存入200h个字节,然后进行奇怪的运算,不知道是干什么的。。。
0101089A 60 PUSHAD
0101089B 8BFC MOV EDI,ESP
0101089D 81EF 00020000 SUB EDI,200
010108A3 33C0 XOR EAX,EAX
010108A5 AA STOS BYTE PTR ES:[EDI]
010108A6 FEC0 INC AL
010108A8 ^ 75 FB JNZ SHORT teNOTEPA.010108A5 ;在6FD84(堆栈中)生成00~FF
010108AA 8BFC MOV EDI,ESP
010108AC 81EF 00010000 SUB EDI,100
010108B2 33DB XOR EBX,EBX
010108B4 8DB5 F11E0000 LEA ESI,DWORD PTR SS:[EBP+1EF1]
010108BA B9 10000000 MOV ECX,10
010108BF A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI] ;把一段数据反复存入堆栈区
010108C0 FEC3 INC BL ;存完100h个字节后跳出
010108C2 74 05 JE SHORT teNOTEPA.010108C9
010108C4 49 DEC ECX
010108C5 ^ 75 F8 JNZ SHORT teNOTEPA.010108BF
010108C7 ^ EB EB JMP SHORT teNOTEPA.010108B4
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
0006FD84 03020100
0006FD88 07060504
0006FD8C 0B0A0908
0006FD90 0F0E0D0C
0006FD94 13121110
0006FD98 17161514
0006FD9C 1B1A1918
0006FDA0 1F1E1D1C
0006FDA4 23222120
0006FDA8 27262524
0006FDAC 2B2A2928
0006FDB0 2F2E2D2C
0006FDB4 33323130
0006FDB8 37363534
0006FDBC 3B3A3938
0006FDC0 3F3E3D3C
0006FDC4 43424140
0006FDC8 47464544
0006FDCC 4B4A4948
0006FDD0 4F4E4D4C
0006FDD4 53525150
0006FDD8 57565554
0006FDDC 5B5A5958
0006FDE0 5F5E5D5C
0006FDE4 63626160
0006FDE8 67666564
0006FDEC 6B6A6968
0006FDF0 6F6E6D6C
0006FDF4 73727170
0006FDF8 77767574
0006FDFC 7B7A7978
0006FE00 7F7E7D7C
0006FE04 83828180
0006FE08 87868584
0006FE0C 8B8A8988
0006FE10 8F8E8D8C
0006FE14 93929190
0006FE18 97969594
0006FE1C 9B9A9998
0006FE20 9F9E9D9C
0006FE24 A3A2A1A0
0006FE28 A7A6A5A4
0006FE2C ABAAA9A8
0006FE30 AFAEADAC
0006FE34 B3B2B1B0
0006FE38 B7B6B5B4
0006FE3C BBBAB9B8
0006FE40 BFBEBDBC
0006FE44 C3C2C1C0
0006FE48 C7C6C5C4
0006FE4C CBCAC9C8
0006FE50 CFCECDCC
0006FE54 D3D2D1D0
0006FE58 D7D6D5D4
0006FE5C DBDAD9D8
0006FE60 DFDEDDDC
0006FE64 E3E2E1E0
0006FE68 E7E6E5E4
0006FE6C EBEAE9E8
0006FE70 EFEEEDEC
0006FE74 F3F2F1F0
0006FE78 F7F6F5F4
0006FE7C FBFAF9F8
0006FE80 FFFEFDFC
0006FE84 F5CDE5A2
0006FE88 8C7ED022
0006FE8C 21A05C56
0006FE90 D9CD5E28
0006FE94 F5CDE5A2
0006FE98 8C7ED022
0006FE9C 21A05C56
0006FEA0 D9CD5E28
0006FEA4 F5CDE5A2
0006FEA8 8C7ED022
0006FEAC 21A05C56
0006FEB0 D9CD5E28
0006FEB4 F5CDE5A2
0006FEB8 8C7ED022
0006FEBC 21A05C56
0006FEC0 D9CD5E28
0006FEC4 F5CDE5A2
0006FEC8 8C7ED022
0006FECC 21A05C56
0006FED0 D9CD5E28
0006FED4 F5CDE5A2
0006FED8 8C7ED022
0006FEDC 21A05C56
0006FEE0 D9CD5E28
0006FEE4 F5CDE5A2
0006FEE8 8C7ED022
0006FEEC 21A05C56
0006FEF0 D9CD5E28
0006FEF4 F5CDE5A2
0006FEF8 8C7ED022
0006FEFC 21A05C56
0006FF00 D9CD5E28
0006FF04 F5CDE5A2
0006FF08 8C7ED022
0006FF0C 21A05C56
0006FF10 D9CD5E28
0006FF14 F5CDE5A2
0006FF18 8C7ED022
0006FF1C 21A05C56
0006FF20 D9CD5E28
0006FF24 F5CDE5A2
0006FF28 8C7ED022
0006FF2C 21A05C56
0006FF30 D9CD5E28
0006FF34 F5CDE5A2
0006FF38 8C7ED022
0006FF3C 21A05C56
0006FF40 D9CD5E28
0006FF44 F5CDE5A2
0006FF48 8C7ED022
0006FF4C 21A05C56
0006FF50 D9CD5E28
0006FF54 F5CDE5A2
0006FF58 8C7ED022
0006FF5C 21A05C56
0006FF60 D9CD5E28
0006FF64 F5CDE5A2
0006FF68 8C7ED022
0006FF6C 21A05C56
0006FF70 D9CD5E28
0006FF74 F5CDE5A2
0006FF78 8C7ED022
0006FF7C 21A05C56
0006FF80 D9CD5E28
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
010108C9 8BFC MOV EDI,ESP
010108CB 81EF 00020000 SUB EDI,200
010108D1 8BF4 MOV ESI,ESP
010108D3 81EE 00010000 SUB ESI,100
010108D9 33C9 XOR ECX,ECX
010108DB 33C0 XOR EAX,EAX
010108DD 02040F ADD AL,BYTE PTR DS:[EDI+ECX]
010108E0 02040E ADD AL,BYTE PTR DS:[ESI+ECX]
010108E3 8A1C07 MOV BL,BYTE PTR DS:[EDI+EAX]
010108E6 8A3C0F MOV BH,BYTE PTR DS:[EDI+ECX]
010108E9 881C0F MOV BYTE PTR DS:[EDI+ECX],BL
010108EC 883C07 MOV BYTE PTR DS:[EDI+EAX],BH ;在堆栈中解码
010108EF FEC1 INC CL ;循环100h次
010108F1 ^ 75 EA JNZ SHORT teNOTEPA.010108DD
下面还有一段填充数据,也是意图不明。。。
01010A1C 8D9D E11C0000 LEA EBX,DWORD PTR SS:[EBP+1CE1]
01010A22 6A 40 PUSH 40
01010A24 59 POP ECX
01010A25 8033 CC XOR BYTE PTR DS:[EBX],0CC ;在01011D60起始的40h个字节填充CC
01010A28 43 INC EBX
01010A29 ^ E2 FA LOOPD SHORT teNOTEPA.01010A25
01010A2B 8D85 E11C0000 LEA EAX,DWORD PTR SS:[EBP+1CE1]
01010A31 33DB XOR EBX,EBX
01010A33 3818 CMP BYTE PTR DS:[EAX],BL ;前面检查填充的第一个字节
01010A35 74 24 JE SHORT teNOTEPA.01010A5B
01010A37 75 01 JNZ SHORT teNOTEPA.01010A3A
01010A3A 8038 CC CMP BYTE PTR DS:[EAX],0CC ;检查01011D60处第一个字节是否CC?
01010A3D 74 1C JE SHORT teNOTEPA.01010A5B
01010A5B 8BF8 MOV EDI,EAX
01010A5D 6A 10 PUSH 10
01010A5F F7D0 NOT EAX
01010A61 59 POP ECX
01010A62 D3E8 SHR EAX,CL
01010A64 F3:AB REP STOS DWORD PTR ES:[EDI] ;在01011D60起始的10h个双字填充0000FEFE
01010A66 E8 01000000 CALL teNOTEPA.01010A6C
[课程]Android-CTF解题方法汇总!