Acprotect1.09g标准版脱壳+伪修复
【脱文作者】 weiyi75[Dfcg]
【作者邮箱】 weiyi75@sohu.com
【作者主页】 Dfcg官方大本营
【使用工具】 Ollydbg1.10b抗Antidbg版,ImportREC1.42,LoadPe,Winhex
【破解平台】 Win2000/XP
【软件名称】 Acprotect1.09g标准版
【下载地址】 附件下载
【软件简介】 强劲的加密软件,反目前任何一种调试器,发现就Kill掉。加密兼容性很好,可与其它加密软件配合多次加密,反脱壳保护(部分代码动态解压),部分程序Stolen Code,与Asprotect不同,它不是用00代替的。
【软件大小】 1.36M
【加壳方式】 UltraProtect 1.x -> RISCO Software Inc
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享。
【破解目的】 手动跟踪寻找Stolen Code具体内容,补充指向壳中的代码.
前言: 虽然大侠们现在都在研究Acprotect1.21新版,我们这些菜鸟是睬着大侠们开发出的路走的,个人认为,脱壳技术更新很快,基础不打牢盲目跟着跑最终是一无所或,Acprotect是一个很强的壳,历代版本变化很大,自1.09g到1.10之间的解码技术完全不同,遇到1.09g加密的程序我们也要能识别出来。跟踪过Acprotect的脱友都知道,从最后一次Seh异常都到Oep处至少有几千条小跳转,一不小心就跑飞,至少的两个小时才能到Oep,用内存断点,和模拟跟踪虽然很容易到达Oep,但如果遇到Stolen Code的程序你怎么办,当然高手一看就可以补上Stolen Code。如果入口特征不熟的人怎么办,我们来寻找一下Stolen Code的具体位置吧。
之前大家先找几个未加壳的C++,Dephi等程序,用Od载入观察前面几句代码执行时Esp值的变化,
举个例子。
005B1AF3 55 PUSH EBP
005B1AF4 8BEC MOV EBP,ESP //执行完这句后, ebp和esp的值相同,一般都以12ffc0=12ffc0居多。
005B1AF6 83C4 F4 ADD ESP,-0C
这几句是C++,Dephi几乎都有的特征码,加壳软件在Stolen Code时都要对12ffc0进行访问,这也是我们的跟踪断点。
第二点,这次目标是加密程序本身,通过FLY大侠的完美卸载Xp,videofixer等先前脱文我们知道一般Dephi程序脱壳后有部分代码指向壳中,没有一起脱出来,本文也是一样的,不用浪费时间演示一遍脱壳修复也不能运行的过程了。现在要做的就是让程序在运行时把这段代码解压在程序内,具体过程如下。
1. 用PEDITOR给其加个新的区段:名字如:New,大小00050000,关于大小设置一般在20000-50000之间,越大越安全,太小的值无法放下所有失去的代码,然后用WinHex在程序末尾粘贴00050000长度的00字节。可以写入某些字符以便查找,如:David
然后用PEDITOR rebuilder PE,初学者先看看程序能否运行。
2. 用Unkillod载入“增肥”后ACProtect.exe,忽略所有异常选项,插件隐藏OD
00597000 > 60 PUSHAD //开始点。
00597001 FC CLD
00597002 66:81C8 D0EE OR AX,0EED0
00597007 4A DEC EDX
00597008 40 INC EAX
00597009 87C1 XCHG ECX,EAX
0059700B F9 STC
0059700C 74 03 JE SHORT ACProtec.00597011
0059700E 75 01 JNZ SHORT ACProtec.00597011
00597010 72 66 JB SHORT ACProtec.00597078
00597012 D3E0 SHL EAX,CL
00597014 EB 01 JMP SHORT ACProtec.00597017
.............................................................
命令行下断点 BP GlobalAlloc
断点含义请看Api手册,估计是分配内存用的。
F9运行,中断5次,Ctrl+F9返回程序领空。不同的程序,需要中断的次数不同,看作手脚的具体位置,如果怕错过,就中断一次后,马上Ctrl+F9返回程序领空,一般是3到5次之间。
0059AD3E 8BF8 MOV EDI,EAX //我的理解是这句为特征码,EAX值是程序即将写入的内存地址,就是我们脱壳后失去的代码,做个手脚吧。
0059AD40 81C7 A00F0000 ADD EDI,0FA0
0059AD46 50 PUSH EAX
0059AD47 B9 70170000 MOV ECX,1770
0059AD4C 8DB5 F5204000 LEA ESI,DWORD PTR SS:[EBP+4020F5]
0059AD52 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
0059AD54 5A POP EDX
0059AD55 8BF2 MOV ESI,EDX
0059AD57 81C6 A00F0000 ADD ESI,0FA0
0059AD5D 8BFE MOV EDI,ESI
0059AD5F B9 70170000 MOV ECX,1770
0059AD64 AC LODS BYTE PTR DS:[ESI]
0059AD65 32C3 XOR AL,BL
0059AD67 AA STOS BYTE PTR ES:[EDI]
0059AD68 ^ E2 FA LOOPD SHORT ACProtec.0059AD64
.............................................................
Alt+M打开内存镜像窗口,
内存镜像
地址 大小 Owner 区段 Contains 类型 访问 初始访问 映射为
00506000 00001000 ACProtec .rdata Imag R RWE
00507000 0000D000 ACProtec .reloc Imag R RWE
00514000 00083000 ACProtec .rsrc resources Imag R RWE
00597000 00021000 ACProtec .perplex SFX,imports Imag R &n
上一篇: logback多环境配置文件
下一篇: readdir函数使用中遇到的问题