[求助]Armadillo 1.xx - 2.xx脱壳问题
arm的代码中每次完成的功能和解码之间的分别还是很容易看出来的。
比如这段iat处理代码和后面解码:
00EF9046 CALL 00F01314 ; JMP to msvcrt.memcpy
00EF904B ADD ESP,0C
00EF904E PUSH 1
00EF9050 MOV EAX,DWORD PTR SS:[EBP-3C80]
00EF9056 SHL EAX,2
00EF9059 PUSH EAX
00EF905A MOV EAX,DWORD PTR SS:[EBP-3908]
00EF9060 ADD EAX,DWORD PTR SS:[EBP-3C88]
00EF9066 PUSH EAX
00EF9067 CALL 00EFAC9D
00EF906C ADD ESP,0C
00EF906F MOV EAX,DWORD PTR SS:[EBP-37A8]
00EF9075 MOV DWORD PTR SS:[EBP+FFFF9EA4],EAX
00EF907B PUSH DWORD PTR SS:[EBP+FFFF9EA4]
00EF9081 CALL 00F0130E ; JMP to msvcrt.??3@YAXPAX@Z
00EF9086 POP ECX
00EF9087 JMP 00EF8790
00EF908C MOV EAX,DWORD PTR SS:[EBP-3924]
00EF9092 MOV DWORD PTR SS:[EBP+FFFF9EA0],EAX
00EF9098 PUSH DWORD PTR SS:[EBP+FFFF9EA0]
00EF909E CALL 00F0130E ; JMP to msvcrt.??3@YAXPAX@Z
00EF90A3 POP ECX
00EF90A4 CMP DWORD PTR SS:[EBP-3930],0
00EF90AB JE 00EF920A
00EF90B1 MOV EAX,DWORD PTR DS:[F11EF8]
00EF90B6 MOV EAX,DWORD PTR DS:[EAX+6C]
00EF90B9 MOV DWORD PTR SS:[EBP+FFFF9C44],EAX
00EF90BF MOV EAX,DWORD PTR SS:[EBP+FFFF9C44]
00EF90C5 MOV DWORD PTR SS:[EBP+FFFFB038],EAX
00EF90CB CALL 00EFC9EA
00EF90D0 NEG EAX
00EF90D2 SBB EAX,EAX
00EF90D4 AND EAX,100
00EF90D9 ADD EAX,100
00EF90DE MOV DWORD PTR SS:[EBP+FFFF9C30],EAX
00EF90E4 PUSH 1DF5E0D
00EF90E9 PUSH DWORD PTR SS:[EBP+FFFFB038]
00EF90EF LEA ECX,DWORD PTR SS:[EBP+FFFFB038]
00EF90F5 CALL 00ED1071
00EF90FA INC EAX
00EF90FB XOR EDX,EDX
00EF90FD MOV ECX,5F5E100
00EF9102 DIV ECX
00EF9104 MOV DWORD PTR SS:[EBP+FFFFB038],EDX
00EF910A MOVZX ECX,BYTE PTR SS:[EBP-37E0]
00EF9111 NEG ECX
00EF9113 SBB ECX,ECX
00EF9115 AND ECX,100
00EF911B ADD ECX,200
00EF9121 MOV EAX,DWORD PTR SS:[EBP+FFFFB038]
00EF9127 XOR EDX,EDX
00EF9129 MOV ESI,2710
00EF912E DIV ESI
00EF9130 IMUL EAX,DWORD PTR SS:[EBP+FFFF9C30]
00EF9137 XOR EDX,EDX
00EF9139 MOV ESI,2710
00EF913E DIV ESI
00EF9140 ADD ECX,EAX
00EF9142 MOV DWORD PTR SS:[EBP+FFFFB03C],ECX
00EF9148 AND DWORD PTR SS:[EBP+FFFFB034],0
00EF914F JMP SHORT 00EF915E
00EF9151 MOV EAX,DWORD PTR SS:[EBP+FFFFB034]
00EF9157 INC EAX
00EF9158 MOV DWORD PTR SS:[EBP+FFFFB034],EAX
00EF915E MOV EAX,DWORD PTR SS:[EBP+FFFFB034]
00EF9164 CMP EAX,DWORD PTR SS:[EBP+FFFFB03C]
00EF916A JNB 00EF920A
00EF9170 PUSH 1DF5E0D
00EF9175 PUSH DWORD PTR SS:[EBP+FFFFB038]
00EF917B LEA ECX,DWORD PTR SS:[EBP+FFFFB038]
00EF9181 CALL 00ED1071
00EF9186 INC EAX
00EF9187 XOR EDX,EDX
00EF9189 MOV ECX,5F5E100
00EF918E DIV ECX
00EF9190 MOV DWORD PTR SS:[EBP+FFFFB038],EDX
00EF9196 MOV EAX,DWORD PTR SS:[EBP+FFFFB038]
00EF919C XOR EDX,EDX
00EF919E MOV ECX,2710
00EF91A3 DIV ECX
00EF91A5 IMUL EAX,DWORD PTR SS:[EBP-37D0]
00EF91AC XOR EDX,EDX
00EF91AE MOV ECX,2710
00EF91B3 DIV ECX
00EF91B5 MOV DWORD PTR SS:[EBP+FFFFB02C],EAX
00EF91BB MOV EAX,DWORD PTR SS:[EBP-3930]
00EF91C1 MOV EAX,DWORD PTR DS:[EAX]
00EF91C3 MOV DWORD PTR SS:[EBP+FFFFB030],EAX
00EF91C9 MOV EAX,DWORD PTR SS:[EBP+FFFFB02C]
00EF91CF LEA EAX,DWORD PTR DS:[EAX*4+4]
00EF91D6 PUSH EAX
00EF91D7 MOV EAX,DWORD PTR SS:[EBP-3930]
00EF91DD ADD EAX,4
00EF91E0 PUSH EAX
00EF91E1 PUSH DWORD PTR SS:[EBP-3930]
00EF91E7 CALL DWORD PTR DS:[F0230C] ; msvcrt.memmove
00EF91ED ADD ESP,0C
00EF91F0 MOV EAX,DWORD PTR SS:[EBP+FFFFB02C]
00EF91F6 MOV ECX,DWORD PTR SS:[EBP-3930]
00EF91FC MOV EDX,DWORD PTR SS:[EBP+FFFFB030]
00EF9202 MOV DWORD PTR DS:[ECX+EAX*4],EDX
00EF9205 JMP 00EF9151
00EF920A PUSH DWORD PTR SS:[EBP-37CC]
00EF9210 CALL 00ED12E4
00EF9215 POP ECX
00EF9216 JMP SHORT 00EF921B
//看看这里就是完成了功能代码jmp到解码代码的分水岭
//跟踪下面的可以发现是把上面的代码解码出下面的另外一段功能代码
00EF9218 SALC
00EF9219 SALC
00EF921A MOV ESP,DWORD PTR DS:[ECX+F10C8C]
00EF9220 MOV DWORD PTR SS:[EBP+FFFFB028],EAX
00EF9226 CMP DWORD PTR SS:[EBP+FFFFB028],0
00EF922D JE SHORT 00EF9265
00EF922F MOV EAX,DWORD PTR SS:[EBP+FFFFB028]
00EF9235 CMP DWORD PTR DS:[EAX],0
00EF9238 JE SHORT 00EF9265
00EF923A MOV EAX,DWORD PTR SS:[EBP+FFFFB028]
00EF9240 MOV EAX,DWORD PTR DS:[EAX]
00EF9242 MOV EAX,DWORD PTR DS:[EAX]
00EF9244 SUB EAX,DWORD PTR DS:[F123C0]
00EF924A MOV ECX,DWORD PTR SS:[EBP+FFFFB028]
00EF9250 MOV ECX,DWORD PTR DS:[ECX]
00EF9252 MOV DWORD PTR DS:[ECX],EAX
00EF9254 MOV EAX,DWORD PTR SS:[EBP+FFFFB028]
00EF925A ADD EAX,4
00EF925D MOV DWORD PTR SS:[EBP+FFFFB028],EAX
00EF9263 JMP SHORT 00EF922F
00EF9265 PUSH 1
00EF9267 PUSH DWORD PTR DS:[F07C10]
00EF926D MOV EAX,DWORD PTR DS:[F11EEC]
00EF9272 ADD EAX,DWORD PTR DS:[F07A10]
00EF9278 PUSH EAX
00EF9279 PUSH DWORD PTR SS:[EBP-37C8]
00EF927F CALL 00ED14AC
00EF9284 ADD ESP,10
00EF9287 MOV EAX,DWORD PTR DS:[F10C8C]
00EF928C MOV DWORD PTR SS:[EBP+FFFFB024],EAX
00EF9292 CMP DWORD PTR SS:[EBP+FFFFB024],0
00EF9299 JE SHORT 00EF92D1
00EF929B MOV EAX,DWORD PTR SS:[EBP+FFFFB024]
00EF92A1 CMP DWORD PTR DS:[EAX],0
00EF92A4 JE SHORT 00EF92D1
00EF92A6 MOV EAX,DWORD PTR SS:[EBP+FFFFB024]
00EF92AC MOV EAX,DWORD PTR DS:[EAX]
00EF92AE MOV EAX,DWORD PTR DS:[EAX]
00EF92B0 ADD EAX,DWORD PTR DS:[F123C0]
00EF92B6 MOV ECX,DWORD PTR SS:[EBP+FFFFB024]
00EF92BC MOV ECX,DWORD PTR DS:[ECX]
00EF92BE MOV DWORD PTR DS:[ECX],EAX
00EF92C0 MOV EAX,DWORD PTR SS:[EBP+FFFFB024]
00EF92C6 ADD EAX,4
00EF92C9 MOV DWORD PTR SS:[EBP+FFFFB024],EAX
00EF92CF JMP SHORT 00EF929B
00EF92D1 PUSH 0F10F70
00EF92D6 CALL DWORD PTR DS:[F021C8] ; ntdll.RtlLeaveCriticalSection
00EF92DC PUSH 0F10F58
00EF92E1 CALL DWORD PTR DS:[F021C8] ; ntdll.RtlLeaveCriticalSection
00EF92E7 PUSH 0F10F70
00EF92EC CALL DWORD PTR DS:[F0207C] ; ntdll.RtlEnterCriticalSection
00EF92F2 PUSH 0F10F88
00EF92F7 CALL DWORD PTR DS:[F0207C] ; ntdll.RtlEnterCriticalSection
//上面的这几个API可以看做标志
00EF92FD MOV EAX,DWORD PTR DS:[F07A10]
00EF9302 MOV DWORD PTR DS:[F123C4],EAX
00EF9307 MOV DWORD PTR SS:[EBP+FFFFB020],0ED7CE8
00EF9311 MOV EAX,DWORD PTR SS:[EBP+FFFFB020]
00EF9317 MOV DWORD PTR SS:[EBP+FFFFB020],EAX
00EF931D MOV DWORD PTR SS:[EBP+FFFFB018],0F10C60
00EF9327 MOV DWORD PTR SS:[EBP+FFFFB01C],0F11CC4
00EF9331 MOV EAX,DWORD PTR SS:[EBP+FFFFB018]
00EF9337 MOV EAX,DWORD PTR DS:[EAX+2C]
00EF933A MOV DWORD PTR SS:[EBP+FFFFB014],EAX
00EF9340 CMP DWORD PTR SS:[EBP+FFFFB014],0
00EF9347 JE SHORT 00EF937F
00EF9349 MOV EAX,DWORD PTR SS:[EBP+FFFFB014]
00EF934F CMP DWORD PTR DS:[EAX],0
00EF9352 JE SHORT 00EF937F
00EF9354 MOV EAX,DWORD PTR SS:[EBP+FFFFB014]
00EF935A MOV EAX,DWORD PTR DS:[EAX]
00EF935C MOV EAX,DWORD PTR DS:[EAX]
00EF935E SUB EAX,DWORD PTR DS:[F123C0]
00EF9364 MOV ECX,DWORD PTR SS:[EBP+FFFFB014]
00EF936A MOV ECX,DWORD PTR DS:[ECX]
00EF936C MOV DWORD PTR DS:[ECX],EAX
00EF936E MOV EAX,DWORD PTR SS:[EBP+FFFFB014]
00EF9374 ADD EAX,4
00EF9377 MOV DWORD PTR SS:[EBP+FFFFB014],EAX
00EF937D JMP SHORT 00EF9349
00EF937F MOV EAX,DWORD PTR SS:[EBP+FFFFB01C]
00EF9385 MOV EAX,DWORD PTR DS:[EAX+2C]
00EF9388 MOV DWORD PTR SS:[EBP+FFFFB010],EAX
00EF938E CMP DWORD PTR SS:[EBP+FFFFB010],0
00EF9395 JE SHORT 00EF93CD
00EF9397 MOV EAX,DWORD PTR SS:[EBP+FFFFB010]
00EF939D CMP DWORD PTR DS:[EAX],0
00EF93A0 JE SHORT 00EF93CD
00EF93A2 MOV EAX,DWORD PTR SS:[EBP+FFFFB010]
00EF93A8 MOV EAX,DWORD PTR DS:[EAX]
00EF93AA MOV EAX,DWORD PTR DS:[EAX]
00EF93AC SUB EAX,DWORD PTR DS:[F123C0]
00EF93B2 MOV ECX,DWORD PTR SS:[EBP+FFFFB010]
00EF93B8 MOV ECX,DWORD PTR DS:[ECX]
00EF93BA MOV DWORD PTR DS:[ECX],EAX
00EF93BC MOV EAX,DWORD PTR SS:[EBP+FFFFB010]
00EF93C2 ADD EAX,4
00EF93C5 MOV DWORD PTR SS:[EBP+FFFFB010],EAX
00EF93CB JMP SHORT 00EF9397
00EF93CD CALL 00EFC556
00EF93D2 MOV ECX,DWORD PTR DS:[F123C8]
00EF93D8 LEA EAX,DWORD PTR DS:[EAX+ECX+6A42AC52]
00EF93DF PUSH EAX
00EF93E0 MOV EAX,DWORD PTR DS:[F11ED0]
00EF93E5 MOVZX EAX,WORD PTR DS:[EAX+16]
00EF93E9 MOV ECX,DWORD PTR DS:[F07C10]
00EF93EF ADD ECX,EAX
00EF93F1 PUSH ECX
00EF93F2 MOV EAX,DWORD PTR DS:[F11ED0]
00EF93F7 MOVZX EAX,WORD PTR DS:[EAX+16]
00EF93FB MOV ECX,DWORD PTR DS:[F07A10]
00EF9401 SUB ECX,EAX
00EF9403 MOV EAX,DWORD PTR DS:[F11EEC]
00EF9408 ADD EAX,ECX
00EF940A PUSH EAX
00EF940B CALL DWORD PTR SS:[EBP+FFFFB020]
00EF9411 ADD ESP,0C
00EF9414 MOV DWORD PTR SS:[EBP-3920],EAX
00EF941A MOV EAX,DWORD PTR SS:[EBP+FFFFB01C]
00EF9420 MOV EAX,DWORD PTR DS:[EAX+2C]
00EF9423 MOV DWORD PTR SS:[EBP+FFFFB00C],EAX
00EF9429 CMP DWORD PTR SS:[EBP+FFFFB00C],0
00EF9430 JE SHORT 00EF9468
00EF9432 MOV EAX,DWORD PTR SS:[EBP+FFFFB00C]
00EF9438 CMP DWORD PTR DS:[EAX],0
00EF943B JE SHORT 00EF9468
00EF943D MOV EAX,DWORD PTR SS:[EBP+FFFFB00C]
00EF9443 MOV EAX,DWORD PTR DS:[EAX]
00EF9445 MOV EAX,DWORD PTR DS:[EAX]
00EF9447 ADD EAX,DWORD PTR DS:[F123C0]
00EF944D MOV ECX,DWORD PTR SS:[EBP+FFFFB00C]
00EF9453 MOV ECX,DWORD PTR DS:[ECX]
00EF9455 MOV DWORD PTR DS:[ECX],EAX
00EF9457 MOV EAX,DWORD PTR SS:[EBP+FFFFB00C]
00EF945D ADD EAX,4
00EF9460 MOV DWORD PTR SS:[EBP+FFFFB00C],EAX
00EF9466 JMP SHORT 00EF9432
00EF9468 MOV EAX,DWORD PTR SS:[EBP+FFFFB018]
00EF946E MOV EAX,DWORD PTR DS:[EAX+2C]
00EF9471 MOV DWORD PTR SS:[EBP+FFFFB008],EAX
00EF9477 CMP DWORD PTR SS:[EBP+FFFFB008],0
00EF947E JE SHORT 00EF94B6
00EF9480 MOV EAX,DWORD PTR SS:[EBP+FFFFB008]
00EF9486 CMP DWORD PTR DS:[EAX],0
00EF9489 JE SHORT 00EF94B6
00EF948B MOV EAX,DWORD PTR SS:[EBP+FFFFB008]
00EF9491 MOV EAX,DWORD PTR DS:[EAX]
00EF9493 MOV EAX,DWORD PTR DS:[EAX]
00EF9495 ADD EAX,DWORD PTR DS:[F123C0]
00EF949B MOV ECX,DWORD PTR SS:[EBP+FFFFB008]
00EF94A1 MOV ECX,DWORD PTR DS:[ECX]
00EF94A3 MOV DWORD PTR DS:[ECX],EAX
00EF94A5 MOV EAX,DWORD PTR SS:[EBP+FFFFB008]
00EF94AB ADD EAX,4
00EF94AE MOV DWORD PTR SS:[EBP+FFFFB008],EAX
00EF94B4 JMP SHORT 00EF9480
00EF94B6 MOV EAX,DWORD PTR DS:[F10C90]
00EF94BB MOV DWORD PTR SS:[EBP+FFFFB004],EAX
00EF94C1 CMP DWORD PTR SS:[EBP+FFFFB004],0
00EF94C8 JE SHORT 00EF9500
00EF94CA MOV EAX,DWORD PTR SS:[EBP+FFFFB004]
00EF94D0 CMP DWORD PTR DS:[EAX],0
00EF94D3 JE SHORT 00EF9500
00EF94D5 MOV EAX,DWORD PTR SS:[EBP+FFFFB004]
00EF94DB MOV EAX,DWORD PTR DS:[EAX]
00EF94DD MOV EAX,DWORD PTR DS:[EAX]
00EF94DF SUB EAX,DWORD PTR DS:[F123C0]
00EF94E5 MOV ECX,DWORD PTR SS:[EBP+FFFFB004]
00EF94EB MOV ECX,DWORD PTR DS:[ECX]
00EF94ED MOV DWORD PTR DS:[ECX],EAX
00EF94EF MOV EAX,DWORD PTR SS:[EBP+FFFFB004]
00EF94F5 ADD EAX,4
00EF94F8 MOV DWORD PTR SS:[EBP+FFFFB004],EAX
00EF94FE JMP SHORT 00EF94CA
00EF9500 PUSH 0
00EF9502 PUSH DWORD PTR DS:[F07C14]
00EF9508 MOV EAX,DWORD PTR DS:[F11EEC]
00EF950D ADD EAX,DWORD PTR DS:[F07A14]
00EF9513 PUSH EAX
00EF9514 PUSH DWORD PTR SS:[EBP-3920]
00EF951A CALL 00ED14AC
00EF951F ADD ESP,10
00EF9522 MOV EAX,DWORD PTR DS:[F10C90]
00EF9527 MOV DWORD PTR SS:[EBP+FFFFB000],EAX
00EF952D CMP DWORD PTR SS:[EBP+FFFFB000],0
00EF9534 JE SHORT 00EF956C
00EF9536 MOV EAX,DWORD PTR SS:[EBP+FFFFB000]
00EF953C CMP DWORD PTR DS:[EAX],0
00EF953F JE SHORT 00EF956C
00EF9541 MOV EAX,DWORD PTR SS:[EBP+FFFFB000]
00EF9547 MOV EAX,DWORD PTR DS:[EAX]
00EF9549 MOV EAX,DWORD PTR DS:[EAX]
00EF954B ADD EAX,DWORD PTR DS:[F123C0]
00EF9551 MOV ECX,DWORD PTR SS:[EBP+FFFFB000]
00EF9557 MOV ECX,DWORD PTR DS:[ECX]
00EF9559 MOV DWORD PTR DS:[ECX],EAX
00EF955B MOV EAX,DWORD PTR SS:[EBP+FFFFB000]
00EF9561 ADD EAX,4
00EF9564 MOV DWORD PTR SS:[EBP+FFFFB000],EAX
00EF956A JMP SHORT 00EF9536
//到这里就是解码完成了,没有解码时看看下面的代码是乱码,运行到这里时就可以看到下面的代码不再是乱码了。
00EF956C XCHG ECX,EDI
00EF956E NOP
00EF956F XCHG ECX,EDI
00EF9571 BOUND EDX,QWORD PTR DS:[ESI+B5709F57]
00EF9577 ROL BH,1 ; 多余的前缀
00EF957A CMP DWORD PTR SS:[EBP+56E0E836],ECX
00EF9580 LOCK MOV DL,77 ; 锁定前缀是不允许的
00EF9583 SBB DH,BYTE PTR SS:[EBP+93404391]
00EF9589 XCHG EAX,ECX
00EF958A INC EAX
00EF958B AAA
00EF958C POP EDX
00EF958D DEC EDI
00EF958E XCHG EAX,EDI
00EF958F ADD DH,BL
00EF9591 PUSH EDI
00EF9592 SBB DWORD PTR SS:[EBP+C22727F6],EBP
00EF9598 PUSHAD
00EF9599 STOS DWORD PTR ES:[EDI]
00EF959A SBB BYTE PTR DS:[ECX+A7257698],DL
00EF95A0 ADC DWORD PTR DS:[ECX],1EBC8442
00EF95A6 INT 9
00EF95A8 TEST BYTE PTR DS:[5879FA4B],CL
00EF95AE DAA
00EF95AF POP EAX
00EF95B0 ADD DWORD PTR DS:[EDX+3454B8F],EAX
00EF95B6 TEST AL,79
00EF95B8 INC EDX
00EF95B9 MOV DH,9B
00EF95BB STOS BYTE PTR ES:[EDI]
//看看解码完成后的乱码变成了什么
00EF956C XCHG ECX,EDI
00EF956E NOP
00EF956F XCHG ECX,EDI
00EF9571 MOV DWORD PTR DS:[F079E0],0F08544
00EF957B MOV EAX,DWORD PTR DS:[F123D0]
00EF9580 MOV EAX,DWORD PTR DS:[EAX+3DF0]
00EF9586 MOV DWORD PTR SS:[EBP-3800],EAX
00EF958C AND DWORD PTR SS:[EBP-37C4],0
00EF9593 JMP SHORT 00EF95A2