免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > 一款游戏资源解包工具的开发始末(4)

一款游戏资源解包工具的开发始末(4)

时间:2012-03-11 21:59来源:未知 整理:寂涯网络 点击:


ExportProc proc uses ebx esi edi, lParam
LOCAL @dwMaxOffset, @Buffer[110]:BYTE, @szFileName[MAX_PATH]:BYTE LOCAL @dwNumberOfBytesWritten, @szPath[MAX_PATH]:BYTE LOCAL @szCreatePath[MAX_PATH]:BYTE LOCAL @dwErro, @lpDest, @dwSuccess, @dwFilePoint mov @dwErro, 0 mov @dwSuccess, 0
invoke _BrowseFolder, lParam, addr @szPath .if eax
push dwBaseAddress pop @dwFilePoint add @dwFilePoint, 20h
mov ebx, dwBaseAddress add ebx, dwFileSize
mov @dwMaxOffset, ebx ;设置循环结束的位置 imul eax, dwFilelnfoSize, 120h sub ebx, eax
assume ebx:ptr FILEINFO .while ebx<@dwMaxOffset
invoke wsprintf, addr @szFileName, CTXT(〃%s\%s〃),addr @szPath, addr [ebx]. szFileName ;将文件名追加到路径名后面
invoke Replace, addr @szFileName ;将路径中的
/转换为\
invoke CreateFile, addr
@szFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, \
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ;创建出出文件 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;第一次创建文件失败可能是因为文件夹不存在, 则再创建所需要的文件夹再创建一遍该文件* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * i f i
.if eax==-l
invoke InitOutputPath, addr @szFileName, addr
@szCreatePath
invoke SHCreateDirectoryEx, lParam, addr
@szCreatePath, NULL
invoke CreateFile, addr @szFileName, GENERIC_ffRITE, FILE_SHARE_READ, \
NULL, CREATE_ALffAYS, FILE_ATTRIBUTE_NORMAL, NULL
.if eax==-l
inc @dwErro invoke
SetDlgItemInt, lParam, STC_ERROR, @dwErro, FALSE
jmp CONTINUE .endif .endif
mov hCreateFile, eax ;保存创建的文件的句柄 ;;;;;;;;计算导出后文件(实际文件)的大小 * * • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
mov eax, [ebx]. dwRealSize
mov byte ptr dwExpFileSize[3], al
mov byte ptr dwExpFileSize[2], ah
shr eax, 16
mov byte ptr dwExpFileSize[l], al mov byte ptr dwExpFileSize, ah
invoke GlobalAlloc, GPTR, dwExpFileSize ;根据要导出 的实际文件大小申请一块内存,提供21化解压函数使用
.if eax
mov @lpDest, eax
;;;;;;;;;;;;;;;;; 计算未解压缩前的数据的大小 * * • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • * * * mov eax, [ebx]. dwFileSize
mov byte ptr dwSrcFileSize[3], al mov byte ptr dwSrcFileSize[2], ah shr eax, 16 mov byte ptr dwSrcFileSize[l], al
mov byte ptr dwSrcFileSize, ah 
;;;;;;;;; 调 用 zlib 的 解 压 函 数 解 压 >ur_. 数
^^ • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • * * * * 
invoke uncompress, @lpDest, offset 
dwExpFileSize, @dwFilePoint, dwSrcFileSize 
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • * * * * 
invoke 
WriteFile, hCreateFile, @lpDest, dwExpFileSize, \ 
addr @dwNumberOfBytesWrit ten, NULL 
.if eax 
inc @dwSuccess 
invoke 
SetDlgItemInt, lParam, STC_SUCCESS, @dwSuccess, FALSE 
jmp CONTINUE 
.else 
inc @dwErro 
invoke 
SetDlgItemInt, lParam, STC_ERROR, @dwSuccess, FALSE 
.endif 
invoke CloseHandle, hCreateFile 
invoke GlobalFree, @lpDest 
.else 
inc @dwErro 
invoke 

本页地址 http://www.jybase.net/ruanjianpojie/20120311795.html

百度搜索更多

谷歌搜索更多

顶一下
(7)
70%
踩一下
(3)
30%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com