Jump type (byte) [0012C2F0]
Jump Flags (dword) [0012C3D4]
IsFlagActive [0012BC74]
Original registers at EIP==0066220A:
ECX 00DC70B0
EDX 0000000A
EBX 00670A00
ESP 0012BC90
EBP 0012D77C
ESI 00000010
EDI 0012C2E4
Original Code:
006621BD JMP SHORT SomeTarget.006621F2
006621BF ??? ; Unknown command
006621C0 JE SHORT SomeTarget.006621C2
006621C2 JMP SHORT SomeTarget.006621D1
006621C4 MOV EAX,87B90FEB
006621C9 LEAVE
006621CA STC
006621CB XOR AL,90
006621CD STC
006621CE JE SHORT SomeTarget.006621D5
006621D0 JMP SHORT SomeTarget.00662205
006621D2 SAL BYTE PTR DS:[EDX+ESI*8-48],87
006621D7 LEAVE
006621D8 INC EAX
006621D9 DEC EAX
006621DA TEST EAX,EAX
006621DC JNZ SHORT SomeTarget.006621BB
006621DE JMP 92CCBF44
006621E3 XCHG AX,DX
006621E5 MOV EAX,EAX
006621E7 JO SHORT SomeTarget.006621F0
006621E9 JL SHORT SomeTarget.006621EE
006621EB JMP SHORT SomeTarget.006621F2
006621ED CALL FA521D66
006621F2 MOV EAX,DWORD PTR SS:[EBP-119C]
006621F8 MOV ECX,DWORD PTR DS:[EAX*4+68C9C8]
006621FF MOV EDX,DWORD PTR SS:[EBP-1470]
00662205 XOR EAX,EAX
00662207 MOV AL,BYTE PTR DS:[ECX+EDX]
0066220A MOV DWORD PTR SS:[EBP-148C],EAX
00662210 MOV EAX,DWORD PTR SS:[EBP-148C]
00662216 CDQ
00662217 AND EDX,0F
0066221A ADD EAX,EDX
0066221C SAR EAX,4
0066221F MOV DWORD PTR SS:[EBP-1484],EAX
00662225 MOV ECX,DWORD PTR SS:[EBP-148C]
0066222B AND ECX,8000000F
00662231 JNS SHORT SomeTarget.00662238
00662233 DEC ECX
00662234 OR ECX,FFFFFFF0
00662237 INC ECX
00662238 MOV DWORD PTR SS:[EBP-1488],ECX
0066223E MOV EDX,DWORD PTR SS:[EBP-1484]
00662244 CMP EDX,DWORD PTR SS:[EBP-1488]
0066224A JNZ SHORT SomeTarget.00662267
0066224C MOV EAX,DWORD PTR SS:[EBP-1488]
00662252 ADD EAX,1
00662255 AND EAX,8000000F
0066225A JNS SHORT SomeTarget.00662261
0066225C DEC EAX
0066225D OR EAX,FFFFFFF0
00662260 INC EAX
00662261 MOV DWORD PTR SS:[EBP-1488],EAX
00662267 MOV ECX,DWORD PTR SS:[EBP-148C]
0066226D MOV EDX,DWORD PTR SS:[EBP-1484]
00662273 MOV EAX,DWORD PTR DS:[ECX*4+68BF38]
0066227A XOR EAX,DWORD PTR DS:[EDX*4+6862AC]
00662281 MOV ECX,DWORD PTR SS:[EBP-1488]
00662287 XOR EAX,DWORD PTR DS:[ECX*4+6862AC]
0066228E MOV DWORD PTR SS:[EBP-147C],EAX
00662294 MOV EDX,DWORD PTR SS:[EBP-13A8]
0066229A AND EDX,0FD7
006622A0 PUSH EDX
006622A1 MOV EAX,DWORD PTR SS:[EBP-148C]
006622A7 MOVSX ECX,BYTE PTR DS:[EAX+68A7A0]
006622AE CALL DWORD PTR DS:[ECX*4+68A8A8]
006622B5 ADD ESP,4
006622B8 MOV DWORD PTR SS:[EBP-1478],EAX
006622BE MOV EDX,DWORD PTR SS:[EBP-13BC]
006622C4 PUSH EDX
006622C5 MOV EAX,DWORD PTR SS:[EBP-1478]
006622CB PUSH EAX
006622CC CALL DWORD PTR SS:[EBP-147C]
006622D2 ADD ESP,8
006622D5 PUSH EAX
006622D6 MOV ECX,DWORD PTR SS:[EBP-148C]
006622DC MOVSX EDX,BYTE PTR DS:[ECX+68A7A0]
006622E3 CALL DWORD PTR DS:[EDX*4+68A8E8]
006622EA ADD ESP,4
006622ED MOV DWORD PTR SS:[EBP-1480],EAX
006622F3 MOV EAX,DWORD PTR SS:[EBP-1480]
006622F9 AND EAX,1
006622FC TEST EAX,EAX
006622FE JE SomeTarget.006623B2
00662304 PUSHAD
00662305 XOR EAX,EAX
00662307 JNZ SHORT SomeTarget.0066230B
00662309 JMP SHORT SomeTarget.00662320
0066230B JMP SHORT SomeTarget.00662340
0066230D SAL BYTE PTR SS:[EBP+18],7A
00662311 OR AL,70
00662313 PUSH CS
00662314 JMP SHORT SomeTarget.00662323
00662316 CALL F1DF318D
0066231B CALL DWORD PTR DS:[74097900]
00662321 LOCK JMP SHORT SomeTarget.006622AB
00662324 FSTP TBYTE PTR DS:[EDX-10]
00662327 MOV AL,BYTE PTR DS:[8D8B6133]
0066232C OUT DX,AL ; I/O command
0066232E ??? ; Unknown command
00662330 MOV ECX,DWORD PTR DS:[ECX*4+68C8E8]
00662337 MOV EAX,DWORD PTR SS:[EBP-1470]
Modified code:
006621BD NOP
006621BE NOP
006621BF MOV ECX,DWORD PTR DS:[60C058] ; Counter for NanoTypes (initial == 0)
006621C5 XOR EAX,EAX
006621C7 MOV AL,BYTE PTR DS:[ECX+60C000] ; Mov the nanotype
006621CD NOP
006621CE MOV ECX,DWORD PTR DS:[60C05C] ; Counter for JumpFlags
006621D4 MOV EDX,DWORD PTR DS:[ECX*4+60C060]
006621DB MOV DWORD PTR DS:[12C3D4],EDX
006621E1 NOP
006621E2 MOV ECX,0DC70B0 ;Restore Register
006621E7 MOV EDX,0A ;Restore Register
006621EC MOV EBX,SomeTarget.00670A00 ;Restore Register
006621F1 MOV ESP,12BC90 ;Restore Register
006621F6 MOV EBP,12D77C ;Restore Register
006621FB MOV ESI,10 ;Restore Register
00662200 MOV EDI,12C2E4 ;Restore Register
00662205 NOP
00662206 NOP
00662207 NOP
00662208 NOP
00662209 NOP
0066220A MOV DWORD PTR SS:[EBP-148C],EAX ; mov NanoType
00662210 MOV EAX,DWORD PTR SS:[EBP-148C]
00662216 CDQ
00662217 AND EDX,0F
0066221A ADD EAX,EDX
0066221C SAR EAX,4
0066221F MOV DWORD PTR SS:[EBP-1484],EAX
00662225 MOV ECX,DWORD PTR SS:[EBP-148C]
0066222B AND ECX,8000000F
00662231 JNS SHORT SomeTarget.00662238
00662233 DEC ECX
00662234 OR ECX,FFFFFFF0
00662237 INC ECX
00662238 MOV DWORD PTR SS:[EBP-1488],ECX
0066223E MOV EDX,DWORD PTR SS:[EBP-1484]
00662244 CMP EDX,DWORD PTR SS:[EBP-1488]
0066224A JNZ SHORT SomeTarget.00662267
0066224C MOV EAX,DWORD PTR SS:[EBP-1488]
00662252 ADD EAX,1
00662255 AND EAX,8000000F
0066225A JNS SHORT SomeTarget.00662261
0066225C DEC EAX
0066225D OR EAX,FFFFFFF0
00662260 INC EAX
00662261 MOV DWORD PTR SS:[EBP-1488],EAX
00662267 MOV ECX,DWORD PTR SS:[EBP-148C]
0066226D MOV EDX,DWORD PTR SS:[EBP-1484]
00662273 MOV EAX,DWORD PTR DS:[ECX*4+68BF38]
0066227A XOR EAX,DWORD PTR DS:[EDX*4+6862AC]
00662281 MOV ECX,DWORD PTR SS:[EBP-1488]
00662287 XOR EAX,DWORD PTR DS:[ECX*4+6862AC]
0066228E MOV DWORD PTR SS:[EBP-147C],EAX
00662294 MOV EDX,DWORD PTR SS:[EBP-13A8] ; mov edx, JumpFlags
0066229A AND EDX,0FD7
006622A0 PUSH EDX
006622A1 MOV EAX,DWORD PTR SS:[EBP-148C]
006622A7 MOVSX ECX,BYTE PTR DS:[EAX+68A7A0]
006622AE CALL DWORD PTR DS:[ECX*4+68A8A8]
006622B5 ADD ESP,4
006622B8 MOV DWORD PTR SS:[EBP-1478],EAX
006622BE MOV EDX,DWORD PTR SS:[EBP-13BC]
006622C4 PUSH EDX
006622C5 MOV EAX,DWORD PTR SS:[EBP-1478]
006622CB PUSH EAX
006622CC CALL DWORD PTR SS:[EBP-147C] ; Check IsFlagActive
006622D2 ADD ESP,8
006622D5 PUSH EAX
006622D6 MOV ECX,DWORD PTR SS:[EBP-148C]
006622DC MOVSX EDX,BYTE PTR DS:[ECX+68A7A0]
006622E3 CALL DWORD PTR DS:[EDX*4+68A8E8]
006622EA ADD ESP,4
006622ED MOV DWORD PTR SS:[EBP-1480],EAX
006622F3 MOV EAX,DWORD PTR SS:[EBP-1480]
006622F9 AND EAX,1
006622FC TEST EAX,EAX ; if eax==1 the jump, JUMP
006622FE NOP
006622FF MOV ECX,DWORD PTR DS:[60C05C] ; counter to JumpFlags
00662305 INC ECX ; ecx = ecx + 1
00662306 MOV DWORD PTR DS:[60C05C],ECX
0066230C CMP ECX,0D ; Number of JumpFlags
0066230F JNZ SomeTarget.006621BF
00662315 NOP
00662316 MOV DWORD PTR DS:[60C05C],0 ; Reset Counter JumpFlags
00662320 MOV ECX,DWORD PTR DS:[60C058] ; Counter NanoTypes
00662326 INC ECX ; ecx = ecx + 1
00662327 MOV DWORD PTR DS:[60C058],ECX
0066232D CMP ECX,55 ; number Of NanoTypes
00662330 JNZ SomeTarget.006621BF ; Init all Loop
00662336 NOP
00662337 NOP
00662338 NOP
00662339 NOP
0066233A NOP
0066233B NOP
0066233C NOP
Setting a BP-Log;
0066220A - log eax
0066229A - log edx
006622D2 - log [0012BC74]
006622FC - log eax
the result is:
0066220A COND: 00000000 ; nanotype
0066229A COND: 00000202 ; JumpFlags
006622D2 COND: 00000000 ; IsFlagActive
006622FC COND: 00000000 ; The jump, JUMP?
0066220A COND: 00000000 ; nanotype
0066229A COND: 00000203 ; JumpFlags
006622D2 COND: 00000000 ; IsFlagActive
006622FC COND: 00000000 ; The jump, JUMP?
0066220A COND: 00000000
0066229A COND: 00000206
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000000
0066229A COND: 00000242
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000000
0066229A COND: 00000282
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000000
0066229A COND: 000007D7
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000000
0066229A COND: 00000A02
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000000
0066229A COND: 00000A82
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000000
0066229A COND: 00000F57
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000000
0066229A COND: 00000F96
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000000
0066229A COND: 00000F97
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000000
0066229A COND: 00000FD3
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000000
0066229A COND: 00000FD6
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 00000202
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 00000203
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 00000206
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 00000242
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 00000282
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 000007D7
006622D2 COND: 00000001
006622FC COND: 00000001
0066220A COND: 00000002
0066229A COND: 00000A02
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000002
0066229A COND: 00000A82
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000002
0066229A COND: 00000F57
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000002
0066229A COND: 00000F96
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000002
0066229A COND: 00000F97
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000002
0066229A COND: 00000FD3
006622D2 COND: 00000000
006622FC COND: 00000000
0066220A COND: 00000002
0066229A COND: 00000FD6
006622D2 COND: 00000000
006622FC COND: 00000000
etc.
Parsing with a program made by me, in my target the result is
Nanotype = Jump Type (flag condition) == JumpType for JCDN [N.Rec]
Flag Flag Flag Flag Flag Flag Flag Flag FlagsDWORD IsActive Jump?
00 = 74 - 0F84 JZ Jump if equal (Z=1) == 0A
C 0 P 0 A 0 Z 1 S 0 T 0 D 0 O 0 00000242 00000001 00000001
C 1 P 1 A 1 Z 1 S 1 T 1 D 1 O 0 000007D7 00000001 00000001
C 1 P 1 A 1 Z 1 S 0 T 1 D 1 O 1 00000F57 00000001 00000001
C 1 P 0 A 1 Z 1 S 1 T 1 D 1 O 1 00000FD3 00000001 00000001
C 0 P 1 A 1 Z 1 S 1 T 1 D 1 O 1 00000FD6 00000001 00000001
C 0 P 0 A 0 Z 0 S 0 T 0 D 0 O 0 00000202 00000000 00000000
C 1 P 0 A 0 Z 0 S 0 T 0 D 0 O 0 00000203 00000000 00000000
C 0 P 1 A 0 Z 0 S 0 T 0 D 0 O 0 00000206 00000000 00000000
C 0 P 0 A 0 Z 0 S 1 T 0 D 0 O 0 00000282 00000000 00000000
C 0 P 0 A 0 Z 0 S 0 T 0 D 0 O 1 00000A02 00000000 00000000
C 0 P 0 A 0 Z 0 S 1 T 0 D 0 O 1 00000A82 00000000 00000000
C 0 P 1 A 1 Z 0 S 1 T 1 D 1 O 1 00000F96 00000000 00000000
C 1 P 1 A 1 Z 0 S 1 T 1 D 1 O 1 00000F97 00000000 00000000
02 = 71 - 0F81 JNO Jump if not overflow (O=0) == 02
C 0 P 0 A 0 Z 0 S 0 T 0 D 0 O 0 00000202 00000001 00000001
C 1 P 0 A 0 Z 0 S 0 T 0 D 0 O 0 00000203 00000001 00000001
C 0 P 1 A 0 Z 0 S 0 T 0 D 0 O 0 00000206 00000001 00000001
C 0 P 0 A 0 Z 1 S 0 T 0 D 0 O 0 00000242 00000001 00000001
C 0 P 0 A 0 Z 0 S 1 T 0 D 0 O 0 00000282 00000001 00000001
C 1 P 1 A 1 Z 1 S 1 T 1 D 1 O 0 000007D7 00000001 00000001
C 0 P 0 A 0 Z 0 S 0 T 0 D 0 O 1 00000A02 00000000 00000000
C 0 P 0 A 0 Z 0 S 1 T 0 D 0 O 1 00000A82 00000000 00000000
C 1 P 1 A 1 Z 1 S 0 T 1 D 1 O 1 00000F57 00000000 00000000
C 0 P 1 A 1 Z 0 S 1 T 1 D 1 O 1 00000F96 00000000 00000000
C 1 P 1 A 1 Z 0 S 1 T 1 D 1 O 1 00000F97 00000000 00000000
C 1 P 0 A 1 Z 1 S 1 T 1 D 1 O 1 00000FD3 00000000 00000000
C 0 P 1 A 1 Z 1 S 1 T 1 D 1 O 1 00000FD6 00000000 00000000
And all the Nanotypes are retrieved to a real JUMP type
See you soon
