【脱文作者】weiyi75[Dfcg] 【作者邮箱】weiyi75@sohu.com 【作者主页】Dfcg官方大本营 【使用工具】Ollydbg1.10b,ImportREC1.6F,LoadPe 【破解平台】Win2000/XP 【软件名称】PE文件分析器 【下载地址】原程序 http://tongtian.net/pediybbs/download.php?id=1514 【下载地址】加密程序 http://tongtian.net/pediybbs/download.php?id=1513 【软件简介】ASProtect1.23RC4Registered版本加密的一个PE文件分析器。 【软件大小】453K 【加壳方式】ASProtect1.23RC4-1.3.08.24->AlexeySolodovnikov 【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享。 【破解目的】模拟跟踪寻找StolenCode具体内容或Oep入口。 前言,这个软件是我用ASProtect1.23RC4Registered版本加密的,使用了所有反跟踪选项。 先OD载入原程序看看 004B7220>$55PUSHEBP//典型Dephi语言入口点 004B7221.8BECMOVEBP,ESP 004B7223.83C4F0ADDESP,-10 .......................................................................................... 附一张入口点截图,大家看到什么没有 寄存器EBP=0012FFF0//这是程序停在入口点EBP的值,其它Dephi语言或编程语言这里的EBP值全部相同,这又说明什么,当Asprotect运行到这里或StolenCode时EBP的值就为EBP=0012FFF0,我们来具体试试。 OD异常设置不忽略内存异常,其余全部忽略,载入程序,用插件隐藏OD。 00401000>6801F04E00PUSHPej.004EF001//加壳程序入口点,F9运行 00DB3A1C833800CMPDWORDPTRDS:[EAX],0 00DB3A1F7402JESHORT00DB3A23 00DB3A21FF30PUSHDWORDPTRDS:[EAX] 00DB3A23FF75F0PUSHDWORDPTRSS:[EBP-10] 00DB3A26FF75ECPUSHDWORDPTRSS:[EBP-14] 00DB3A29C3RETN//这里下断点,Shift F9中断后取消断点。 ........................................................................ 我这次没有用内存镜像断点到OEP,下面的这个方法可以发现StolenCode(如果有) Oep二合一。 仍然是命令行断点 tcebp==12fff0//当前EBP内容为12fff0就被中断,略微看看就可以找到StolenCode(如果有)或Oep 00DC6348/EB02JMPSHORT00DC634C//一会就来到这里,呵呵,C 语言就开始有StolenCode,而且略有变形,往下全部用F7步过,转标签1 00DC634A|CD20INT20 00DC634C\F2:PREFIXREPNE://这样的语句其实是一些变形Jmp;多余的前缀 00DC634DEB01JMPSHORT00DC6350 00DC634F-E965EB01E9JMPE9DE4EB9 00DC63546891AA7FAEPUSHAE7FAA91 00DC63596A2APUSH2A 00DC635B897C2404MOVDWORDPTRSS:[ESP 4],EDI 00DC635FF2:PREFIXREPNE:;多余的前缀 00DC6360EB01JMPSHORT00DC6363 00DC63629A8D642404F3E>CALLFAREBF3:0424648D;远距呼叫 00DC636902CDADDCL,CH 00DC636B20F2ANDDL,DH 00DC636DEB01JMPSHORT00DC6370 00DC636FC7???;未知命令 00DC63700FCFBSWAPEDI 00DC6372EB02JMPSHORT00DC6376 ........................................................................ 00DC63B6F2:PREFIXREPNE:;多余的前缀 00DC63BA8D6424F7LEAESP,DWORDPTRSS:[ESP-9] 00DC63BE66:8135C763DC0>XORWORDPTRDS:[DC63C7],0AA91 00DC63C77AABJPESHORT00DC6374 00DC63C7/EB01JMPSHORT00DC63CA 00DC63CA8D642442LEAESP,DWORDPTRSS:[ESP 42] 00DC63CE8D6424C3LEAESP,DWORDPTRSS:[ESP-3D] 00DC63D266:8135DB63DC0>XORWORDPTRDS:[DC63DB],0D71A 00DC63DBF3:PREFIXREP:;多余的前缀 00DC63E055PUSHEBP//StolenCode第一句。 00DC63E166:8135EB63DC0>XORWORDPTRDS:[DC63EB],80A3 00DC63EAF2:PREFIXREPNE:;多余的前缀 00DC63EE8F442400POPDWORDPTRSS:[ESP];0012FFF0 00DC63F28BECMOVEBP,ESP执行完它后,EBP=ESP=12FFC0,打破了从跟踪到这里EBP的值一直为12fff0的情况,同时也让我们也可以知道入口代码就在附近。StolenCode第二句。 00DC63F481EC10000000SUBESP,10StolenCode第三句,这句要改为ADDESP,10标准化。 00DC63FAF2:PREFIXREPNE:;多余的前缀 00DC63FE/65:EB01JMPSHORT00DC6402;多余的前缀 00DC640251PUSHECX 00DC6403/EB04JMPSHORT00DC6409 ................................................................ 后面有无数条小跳转,全部都是垃圾,我跟踪了40分钟,还没走完,已经吐血了。 所以Dephi程序最好先确定StolenCode数目。 004B7220>$55PUSHEBP 004B7221.8BECMOVEBP,ESP 004B7223.83C4F0ADDESP,-10 004B7226.B8A86F4B00MOVEAX,Pe.004B6FA8 这个程序一共抽掉11字节。 前面三句我们已经得到,现在的问题是MOVEAX,xxxxxxxx EAX的值是多少? ALT M打开内存镜像。 内存镜像,项目12 地址=00401000//对401000Code段下内存断点。 大小=000B7000(749568.) Owner=Pej00400000 区段= Contains=code 类型=Imag01001002 访问=R 初始访问=RWE 004065D8-FF2558C24B00JMPDWORDPTRDS:[4BC258]//中断在这里,清除内存断点。 ...................................................... IAT修复,关闭OD,打开加壳程序,呵呵OEP填1000,ImportREC把Size认为000000A8太小了,改为1000,点获得输入表。显示无效,先用等级1方式跟踪,然后用Asprtect1.22插件再减轻一下压力。还剩591个指针没修复。 现在的问题是,这591个指针是有用的吗?ImpRec1.6会告诉你 点击showinvalid并右键单击选择其中的一个,让我们来修复它 00BC214<-右键单击选择Deasm\HexView查看: ImpRec1.6提示你,readerror!好,够了,只要有这个提示的一律可以安全的Cut。 如果这个指针有效,里面会显示汇编指令。 找了一会,发现00BC370处的指针是唯一一个没识别的指针。 右键单击选择Deasm\HexView查看,究竟它是Kernel32.dll中的哪个函数呢,按PageDown两次,看到 00DB1D2Ecall00DA5158//=kernel32.dll/00B3/FindResourceA 第一个看到的Api函数就是要修复的指针。 呵呵,修复它吧,双击00BC370这行,填入Api函数FindResourceA。 拿起剪刀,将剩下590个垃圾指针全部Cut,IAT全部修复,爽啊。修正Oep为B7220最后修复文件,无法运行! 经过调试N个Dephi文件,发现Asprotect1.23rc4的Dephi程序,入口处脱壳有反脱壳代码,只能在最后一次异常处脱壳,不然即使修复IAT和补上代码也不能运行。 于是在最后一次异常处用LoadPe脱壳,IAT修复和StolenCode过程问题如上所述面,最后正常运行。 【破解总结】发现Dephi语言的Asprotect1.23Rc4的壳开始用StolenCode,并且有变形指令,反脱壳代码,最麻烦,tcebp==12fff0还不错吧,好累啊,全文完。 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 11:39 , Processed in 0.180310 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.