* 史萊姆的第一個家 * * 軟體資訊 --- 每日更新 * * 軟體下載 --- 教學文件 * * 免費資源 --- 郵件共享 * |
![]() |
* 史萊姆的第一個家 * * 軟體資訊 --- 每日更新 * * 軟體下載 --- 教學文件 * * 免費資源 --- 郵件共享 * |
|
|
#1 (permalink) |
|
VIP 贊助會員
![]() |
也談ASProtect 1.3之stolen code的修復
ASProtect 1.23RC4因為stolen code沒有變形,可以不用分析得到,1.3開始變形了。blowfish把程序email給me後,對於其stolen code,偶不是去猜測,而是採用到殼中去找的辦法,現把分析報告如下: 1、設置OllyDBG異常除「記憶體訪問異常」外全部鉤上。記下入口esp值,以備後用。 2、25次異常後按原來的方法在ret處按F2設斷,斷下後然後根據入口esp在命令行設置tc ebp>=12ffc0 && ebp<12ffc4,停下後,即到變形的stolen code處。 F7一步一步跟,並分析見每行尾部。 0B22424B PUSH -1 //此處3行代碼沒變,照抄 0B22424D PUSH 54E948 0B224252 PUSH 542B94 0B224257 MOV EAX,DWORD PTR FS:[0] 0B22425D JMP SHORT 0B224261 0B22426E PUSH 34 0B224270 JMP SHORT 0B224275 ; 多餘的前綴 0B224275 PUSH DWORD PTR FS:[0] 0B22427C MOV DWORD PTR SS:[ESP+4],EAX //[esp+4]=eax 相當於把前面push 34變為push eax 0B22428C LEA ESP,DWORD PTR SS:[ESP+4] //等於add esp,4 0B224290 MOV DWORD PTR FS:[0],ESP //設置SEH,前面幾行可以簡化為push fs:[0],mov fs[0],esp 0B224297 SUB ESP,58 //不變,照抄 0B22429A JMP SHORT 0B22429E 0B2242AB PUSH 34 0B2242AD JMP SHORT 0B2242B2 ; 多餘的前綴 0B2242B2 PUSH DWORD PTR FS:[0] 0B2242B9 MOV DWORD PTR SS:[ESP+4],EBX //[esp+4]=ebx 相當於前面push 34變為push ebx 0B2242C9 LEA ESP,DWORD PTR SS:[ESP+4] //add esp,4 相當於去掉PUSH DWORD PTR FS:[0],下同 0B2242CD JMP SHORT 0B2242D1 0B2242DE PUSH 34 0B2242E0 JMP SHORT 0B2242E5 ; 多餘的前綴 0B2242E5 PUSH DWORD PTR FS:[0] 0B2242EC MOV DWORD PTR SS:[ESP+4],ESI //[esp+4]=eax 相當於把前面push 34變為push esi 0B2242FC LEA ESP,DWORD PTR SS:[ESP+4] 0B224300 JMP SHORT 0B224304 0B224311 PUSH 34 0B224313 JMP SHORT 0B224318 ; 多餘的前綴 0B224318 PUSH DWORD PTR FS:[0] 0B22431F MOV DWORD PTR SS:[ESP+4],EDI //[esp+4]=eax 相當於把前面push 34變為push edi 0B22432F LEA ESP,DWORD PTR SS:[ESP+4] 0B224333 MOV DWORD PTR SS:[EBP-18],ESP 0B224336 JMP SHORT 0B22433A ; 多餘的前綴 0B22433E PUSH 53F07B //不變,照抄 0B224343 PUSH 0B224131 0B224348 RETN 0B224131 JMP SHORT 0B224134 以下打掃戰場: 0B224134 PUSH ECX 0B224135 PUSH EDI 0B224136 PUSHFD 0B224137 CLD 0B224138 MOV EDI,0B224175 0B22413D MOV ECX,145E 0B224142 REP STOS BYTE PTR ES:[EDI] 0B224144 POPFD 0B224145 POP EDI 0B224146 POP ECX 0B224147 RETN 回到fake OEP: 0053F07B CALL DWORD PTR DS:[54D1DC] 0053F081 XOR EDX,EDX 0053F083 MOV DL,AH 0053F085 MOV DWORD PTR DS:[88BAF10],EDX 0053F08B MOV ECX,EAX 0053F08D AND ECX,0FF 0053F093 MOV DWORD PTR DS:[88BAF0C],ECX 0053F099 SHL ECX,8 0053F09C ADD ECX,EDX 0053F09E MOV DWORD PTR DS:[88BAF08],ECX 0053F0A4 SHR EAX,10 3.通過以上跟蹤分析,得出正確的stolen code如下:(而且長度正好一致) 0053F055 >PUSH EBP 0053F056 MOV EBP,ESP 0053F058 PUSH -1 0053F05A PUSH ASPR2.0054E948 0053F05F PUSH ASPR2.00542B94 0053F064 PUSH DWORD PTR FS:[0] 0053F06A MOV DWORD PTR FS:[0],ESP 0053F070 SUB ESP,58 0053F073 PUSH EBX 0053F074 PUSH ESI 0053F075 PUSH EDI 0053F076 PUSH ASPR2.0053F07B 0053F07B CALL DWORD PTR DS:[54D1DC] |
|
|
送花文章: 3,
|
|
|