为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

常见压缩壳的入口点以及ESP定律脱法

2008-7-16 19:29| 投稿: security

摘要: UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & LaszloASPack 2.12 -> Alexey Solo...
UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & LaszloASPack 2.12 -> Alexey Solodovnikov堀北压缩(KByS)0.28主程序脱壳PECompact 2.x -> Jeremy CollakePEncrypt 3.1 Final -> junkcodeeuk北斗壳 Nspack3.7 一共六款 都是压缩壳 脱之简单 整理一下 UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo 006055B0 >   60                pushad006055B1 BE 00605400       mov esi,STV.00546000             ; 这里使用ESP定律006055B6 8DBE 00B0EBFF    lea edi,dword ptr ds:[esi+FFEBB000>006055BC C787 C4201600 135F>mov dword ptr ds:[edi+1620C4],705D>006055C6 57                push edi006055C7 83CD FF          or ebp,FFFFFFFF006055CA EB 0E             jmp short STV.006055DA ESP后 直接到关键JMP 00605727   ^\E9 28CFF5FF       jmp STV.00562654                ;F8一次 直接到达OEP0060572C 44                inc esp0060572D 57                push ediASPack 2.12 -> Alexey Solodovnikov 0044B001 >   60             PUSHAD                                  ; OD载入停在这里0044B002 E8 03000000    CALL acerip.0044B00A                   ; 观看ESP寄存器 0012FFA4 ESP定律对付 ESP后 OD停到这里 0044B3B0 /75 08          JNZ SHORT acerip.0044B3BA             ; F8一次0044B3B2 |B8 01000000    MOV EAX,10044B3B7 |C2 0C00       RETN 0C0044B3BA \68 BC1F4000    PUSH acerip.00401FBC0044B3BF C3             RETN                                  ; RETN之后 就跳到OEP堀北压缩(KByS)0.28主程序脱壳 00401000 >/$   68 71EA4A00 PUSH 堀北压缩.004AEA71                      ;   OD载入停到这里~00401005   |.   E8 01000000 CALL 堀北压缩.0040100B                      ;   这里ESP定律 F9 OD停到这里004AEA71 B8 83EA0A00    MOV EAX,0AEA83                         ; ESP停到这里004AEA76 BA 00004000    MOV EDX,堀北压缩.00400000004AEA7B 03C2          ADD EAX,EDX004AEA7D FFE0          JMP EAX004AEA7F B1 15          MOV CL,15004AEA81 0000          ADD BYTE PTR DS:[EAX],AL004AEA83 60             PUSHAD004AEA84 E8 00000000    CALL 堀北压缩.004AEA89                      ; F9一次到这里 F9后 循环返回到这里00401005   |.   E8 01000000 CALL 堀北压缩.0040100B                      下面继续F9运行 (大约)15次时 OD有一次明显的时间间隔 然后停到这里 00432A71 B8 E5A70000    MOV EAX,0A7E5             ;停到这里00432A76 BA 00004000    MOV EDX,堀北压缩.0040000000432A7B 03C2          ADD EAX,EDX00432A7D FFE0          JMP EAX                   ;到这里F7进00432A7F B1 15          MOV CL,1500432A81 0000          ADD BYTE PTR DS:[EAX],AL00432A83 60             PUSHAD00432A84 E8 00000000    CALL 堀北压缩.00432A89 进入后 (Ctrl+A 我这的OD需要分析下代码 )这里就是OEP0040A7E5   /.   55          PUSH EBP                      ;OEP0040A7E6   |.   8BEC       MOV EBP,ESP0040A7E8   |.   6A FF       PUSH -10040A7EA   |.   68 C0F54000 PUSH 堀北压缩.0040F5C00040A7EF   |.   68 00BC4000 PUSH 堀北压缩.0040BC00                      ;   SE 处理程序安装0040A7F4   |.   64:A1 0000000>MOV EAX,DWORD PTR FS:[0]PECompact 2.x -> Jeremy Collake 005B8B60 >   B8 94426000    MOV EAX,MeteorNe.00604294             ; OD载入 停到这里005B8B65 50             PUSH EAX005B8B66 64:FF35 0000000>PUSH DWORD PTR FS:[0]005B8B6D 64:8925 0000000>MOV DWORD PTR FS:[0],ESP                ; 这里使用ESP定律 006042C3 83C4 04       ADD ESP,4     //ESP定律后挺到这里,向下找找关键跳转006042C6 55             PUSH EBP006042C7 53             PUSH EBX006042C8 51             PUSH ECX006042C9 57             PUSH EDI006042CA 56             PUSH ESI006042CB 52             PUSH EDX…………中间代码省略00604350 5A             POP EDX00604351 5E             POP ESI00604352 5F             POP EDI00604353 59             POP ECX00604354 5B             POP EBX00604355 5D             POP EBP00604356 FFE0          JMP EAX          //这里的CALL应该是跳向OEP呀~~   PEncrypt 3.1 Final -> junkcodeeuk OD载入:004E3600 > $   B8 00E05500 MOV EAX,MediaFix.0055E000 //停到这里 F8单步一次004E3605 .   FFD0       CALL EAX                                  //F7跟进此Call004E3607    2C          DB 2C                                  ;   CHAR ','……F7跟进CALL:0055E000 /E9 25010000    JMP MediaFix.0055E12A           //这里的跳转是实现的 我们F8一次即可0055E005 |57             PUSH EDI0055E006 |65:6E          OUTS DX,BYTE PTR ES:[EDI]             ; I/O 命令……F8一次后停到这里:0055E12A 58             POP EAX                               ; MediaFix.004E3607   //停到这里,我们在该代码下方找到第一个retn语句 并下断0055E12B E8 16030000    CALL MediaFix.0055E4460055E130 48             DEC EAX……中间无用代码省去0055E2A7 F3:A4          REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>0055E2A9 59             POP ECX0055E2AA 5F             POP EDI0055E2AB 5E             POP ESI0055E2AC C3             RETN                               //这就是第一个retn语句,下断,运行停在这里。F8一次 即可通往OEP 我这还得Ctrl+A分析下004E3600 > $   55          PUSH EBP                               ;   MediaFix.0055E005 // OEP004E3601 .   8BEC       MOV EBP,ESP004E3603 .   83C4 F0    ADD ESP,-10004E3606 .   53          PUSH EBX004E3607 .   B8 F0324E00 MOV EAX,MediaFix.004E32F0004E360C .   E8 8737F2FF CALL MediaFix.00406D98北斗壳 Nspack3.7 0057A867 >   9C             PUSHFD                                  ; OD载入后停到这里0057A868 60             PUSHAD                                  ; 我们在这里ESP定律即可0057A869 E8 00000000    CALL 流星Nisy.0057A86E 0057AAD9   - E9 5AF5F8FF    JMP 流星Nisy.0050A038                   ; ESP定律后到这里 F8一次到OEP0057AADE 8BB5 A1F9FFFF MOV ESI,DWORD PTR SS:[EBP-65F]0057AAE4 0BF6          or ESI,ESI0057AAE6 0F84 97000000 JE 流星Nisy.0057AB83 0050A038    55          DB 55                                  ;   CHAR 'U'//这里Ctrl+A分析一下就可以了0050A039    8B          DB 8B0050A03A    EC          DB EC0050A03B    83          DB 830050A03C    C4          DB C40050A03D    EC          DB EC0050A03E    53          DB 53                                  ;   CHAR 'S' Ctrl+A分析后的代码:0050A038 .   55          PUSH EBP0050A039 .   8BEC       MOV EBP,ESP0050A03B .   83C4 EC    ADD ESP,-140050A03E .   53          PUSH EBX0050A03F .   56          PUSH ESI

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部