- 精华
- 阅读权限
- 40
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2009-8-15
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
华丽的目标:共享万岁。olly
分析目标:永恒Ol的main.vcf文件。
main.vcf文件结构与SFILESYSTEM开头,后面的解开算法没有清楚的获知。但是可以利用OD(OLLYDBG)将数据提取出来。
目标正在进一步的研究中,
算法挺复杂的,应该是本人的汇编基础不够!
获取文件中的解压后的数据。(OD请在网上查找,)
载入永恒OL可执行文件。
方法先定位uncompress函数位置,然后下断执行到返回,再单步。就可以到了uncompress的调用地方,
然后设计脚本就可以了,现在将现成的脚本公布如下:本人刚学OD不对的请指正。
脚本内容:
/*
永恒OL旧版1.49 MB (1,564,788 字节)
读取压缩文件中的文件列表存于G:\filelist.txt
*/
var sourcelen,source
var sFile
var eip1,eip2
var dest,destlen,fn,flen
mov sFile, "g:\filelist.txt"
//msg sfile
mov eip1,004E2BE2 //调用uncompress前的地址
mov eip2,004E2BEF //调用uncompress后并恢复ESP的地址。
bp eip1 //下断,在调用因为一直用所以放在前面
w12:
//COB
run //执行到断点处
//循环记录
//记录所用的地址。
mov sourcelen,ebx //解压前长度
mov source ,edi //解压前的数据
mov destlen,ecx //解压后数据长度的地址
mov dest,eax //解压后数据
go eip2
mov fn,[esp]
FIND fn, 00 ,100
mov flen,$RESULT
SUB flen,fn //取文件名长度
wrta sFile, "FileName:"
dma fn,flen,sFile //保取文件名进入sFile指定的文件
wrta sFile, "\r\n"
//wrta sFile, "\r\nFileBegin:\r\n"
//DMA dest,[destlen],sFile //去掉前面的//可以保存解压后的数据到sFile指定的文件
//解压前的数据:DMA source,sourcelen,sFile 注意sourcelen与destlen两个格式不一样。
//wrta sFile, "\r\nFileEnd.:\r\n"
//run
//EOB w12
jmp w12 |
|