Стартовый пул

This commit is contained in:
2024-04-02 08:46:59 +03:00
parent fd57fffd3a
commit 3bb34d000b
5591 changed files with 3291734 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -0,0 +1,14 @@
Win32ASM unrar.dll example
==========================
Created using RadASM (www.radasm.com) IDE and MASM32(http://movsd.com).
Copy unrar.lib to directory for compilation.
The compiled unrar.exe file uses the first .rar file it finds.
-------------------------------------------------------------------------------
Get a full UNRAR (De)Installation System here: http://flo.mueckeimnetz.de/eis
Please drop a line if you find the samples or the include file useful - I'd be
glad to hear about.
-Florian Muecke (devATmueckeimnetz.de)

View File

@@ -0,0 +1,34 @@
#include "\masm32\include\resource.h"
#define ICON_1 500
#define IDD_DIALOG1 200
#define IDC_PROGRESS1 1001
#define IDC_PROGRESS2 1002
#define IDC_STATIC -1
#define IDC_file 301
#define IDC_volume 302
#define IDC_filebytes 303
#define IDC_totalbytes 304
ICON_1 ICON "mainicon.ico"
IDD_DIALOG1 DIALOGEX 0, 0, 292, 132
STYLE DS_ABSALIGN | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Win32ASM UnRAR Example - by F.M<>cke"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Start",IDOK,7,113,50,14,//BS_FLAT
PUSHBUTTON "Quit",IDCANCEL,235,113,50,14,//BS_FLAT
GROUPBOX "Current File",IDC_STATIC,7,7,278,45
GROUPBOX "Overall Progress",IDC_STATIC,7,60,278,45
CONTROL "",IDC_file,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_GROUP,13,16,266,9
CONTROL "Progress1",IDC_PROGRESS1,"msctls_progress32",WS_BORDER,14,27,262,10 //PBS_SMOOTH|
CONTROL "Progress1",IDC_PROGRESS2,"msctls_progress32",WS_BORDER,14,80,262,10 //PBS_SMOOTH|
CONTROL "",IDC_filebytes,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_GROUP,13,38,266,9
CONTROL "",IDC_totalbytes,"Static",SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_GROUP,13,91,266,9
LTEXT "Current Volume:",IDC_STATIC,14,69,52,9,SS_CENTERIMAGE
LTEXT "",IDC_volume,70,69,200,9,SS_CENTERIMAGE
END

Binary file not shown.

View File

@@ -0,0 +1,236 @@
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;
; Win32ASM (MASM32) UnRAR Example
;
; Author: Florian M<>cke
; Version: 2, 11.09.05 (complete re-do)
;
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
.586
.model flat, stdcall
option casemap :none ;case sensitive
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
include windows.inc
include user32.inc
include kernel32.inc
include comctl32.inc
include unrar.inc
includelib comctl32.lib
includelib user32.lib
includelib kernel32.lib
includelib unrar.lib
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
ThreadProc PROTO :DWORD
RARCallbackProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
.data
hInstance dd 0
hWnd dd 0
hIcon dd 0
hArchive dd 0
ArcName db "test.rar",0
DestPath db "EXTRACTED_DATA",0
caption db "W32ASM UNRAR example",0
ArcOpenErr db "archive open error",0
NextVolQuery db "next volume not found",0
; NextVolOk db "next volume successfully opened",0
ArchiveData RAROpenArchiveData <>
HeaderData RARHeaderData <>
buffer db 260 dup (0)
unpSize dd 0
FormatStr db "%lu of %lu bytes",0
bExtracted dd 0
fbExtracted dd 0
dummy_dd dd 0
FileCRC dd 0
IDC_PROGRESS equ 1
ThreadID dd 0
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
.code
start:
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke InitCommonControls
mov ArchiveData.lpArcName, OFFSET ArcName
mov ArchiveData.OpenMode, RAR_OM_LIST
invoke RAROpenArchive, ADDR ArchiveData
mov hArchive, eax
.if eax == 0
invoke MessageBox, NULL, ADDR ArcOpenErr, ADDR caption, MB_OK
jmp the_end
.endif
;get unpacked filesize
invoke RARReadHeader, hArchive, ADDR HeaderData
getunpsize:
invoke RARProcessFile, hArchive,RAR_SKIP,0,0
mov eax, HeaderData.UnpSize
add unpSize, eax
invoke RARReadHeader, hArchive, ADDR HeaderData
.if eax != ERAR_END_ARCHIVE
jmp getunpsize
.endif
invoke RARCloseArchive, hArchive
invoke DialogBoxParam,hInstance,200,0,ADDR WndProc,0
the_end:
invoke ExitProcess, 0
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
WndProc proc hWin :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD
.if uMsg == WM_INITDIALOG
push hWin
pop hWnd
invoke LoadIcon,hInstance,500
mov hIcon, eax
invoke SendMessage,hWin,WM_SETICON,1,hIcon
;mov eax, 1000
;shl eax,16 ;create a high and low word
;invoke SendDlgItemMessage, hWin, 1001, PBM_SETRANGE,0,eax
.elseif uMsg == WM_COMMAND
mov eax, wParam
.if eax == IDOK ;LAUNCH
invoke CreateThread,NULL,NULL,ADDR ThreadProc,NULL,NORMAL_PRIORITY_CLASS,ADDR ThreadID
.elseif eax == IDCANCEL ;QUIT
invoke EndDialog,hWin,0
.endif
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWin,0
.endif
xor eax,eax
ret
WndProc endp
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
ThreadProc PROC RetVal:DWORD
invoke SendDlgItemMessage, hWnd, 1002, PBM_SETPOS,eax,0
mov ArchiveData.lpArcName, OFFSET ArcName
mov ArchiveData.OpenMode, RAR_OM_EXTRACT
invoke RAROpenArchive, ADDR ArchiveData
mov hArchive, eax
invoke RARSetCallback, hArchive, offset RARCallbackProc, 0
_extract:
invoke RARReadHeader, hArchive, ADDR HeaderData
.if eax == ERAR_END_ARCHIVE
jmp extract_
.endif
invoke SendDlgItemMessage, hWnd, 302, WM_SETTEXT,0, ADDR HeaderData.ArcName
invoke RARProcessFile, hArchive, RAR_EXTRACT, ADDR DestPath, NULL
jmp _extract
extract_:
invoke RARCloseArchive, hArchive
ret
ThreadProc endp
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
RARCallbackProc PROC msg:DWORD, userData:DWORD, p1:DWORD, p2:DWORD
; RAR callback proc for data/volume processing
.if msg == UCM_CHANGEVOLUME
.if p2 == RAR_VOL_NOTIFY
invoke SendDlgItemMessage, hWnd, 302, WM_SETTEXT,0, p1
mov eax, 1
ret
.elseif p2 == RAR_VOL_ASK
invoke MessageBox,0, ADDR NextVolQuery, addr caption, MB_OK
mov eax, -1
ret
.endif
.elseif msg == UCM_PROCESSDATA
;; .if abort_thread == 1 ;has thread been aborted?
;; return -1
;; .endif
;check if processing file has changed
mov eax, FileCRC
.if HeaderData.FileCRC != eax ;new file
mov eax, p2 ;n of extracted bytes
mov bExtracted, eax
mov eax, HeaderData.FileCRC
mov FileCRC, eax
invoke SendDlgItemMessage, hWnd, 301, WM_SETTEXT,0, ADDR HeaderData.FileName
.else ;still on the same file
mov eax, p2
add bExtracted,eax
.endif
.if HeaderData.UnpSize > eax
;get percent of current extraction
finit ;init fpu
fild bExtracted ;load nBytesExtracted on TOS
mov dummy_dd, 100
fimul dummy_dd
fidiv HeaderData.UnpSize ;divides both
fistp dummy_dd ;get integer from TOS
;--same without floating point--
;mov eax, nBytesExtracted
;mov ebx, 100
;mul ebx ;result in edx:eax
;div HeaderData.UnpSize ;source=edx:eax, result in eax
;mov dummy_dd,eax
;----------------------------
.else
mov eax,100
mov dummy_dd,eax
.endif
invoke SendDlgItemMessage, hWnd, 1001, PBM_SETPOS,dummy_dd,0
invoke wsprintf, ADDR buffer, ADDR FormatStr, bExtracted, HeaderData.UnpSize
invoke SendDlgItemMessage, hWnd, 303, WM_SETTEXT,0, ADDR buffer
;get overall progress percentage
mov eax, fbExtracted
add eax, p2 ;add n of extracted bytes
mov fbExtracted,eax
finit ;init fpu
fld fbExtracted ;load again
mov dummy_dd,100
fimul dummy_dd ;mul tos by 100
fld unpSize ;load max extracted size
fdivp ST(1),ST(0) ;divide to get percentage
fistp dummy_dd ;save value
invoke SendDlgItemMessage, hWnd, 1002, PBM_SETPOS,dummy_dd,0
invoke wsprintf, ADDR buffer, ADDR FormatStr, fbExtracted, unpSize
invoke SendDlgItemMessage, hWnd, 304, WM_SETTEXT,0, ADDR buffer
mov eax, 1
ret
.elseif msg == UCM_NEEDPASSWORD
;; invoke lstrcpy,p1,addr pass
.endif
xor eax,eax
ret
RARCallbackProc ENDP
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
end start

View File

@@ -0,0 +1,128 @@
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
;
; include file for unrar.dll (version 30.Aug.02)
; recreated from unrar.h by F.Muecke
;
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
; constants
; ~~~~~~~~~
ERAR_END_ARCHIVE equ 10
ERAR_NO_MEMORY equ 11
ERAR_BAD_DATA equ 12
ERAR_BAD_ARCHIVE equ 13
ERAR_UNKNOWN_FORMAT equ 14
ERAR_EOPEN equ 15
ERAR_ECREATE equ 16
ERAR_ECLOSE equ 17
ERAR_EREAD equ 18
ERAR_EWRITE equ 19
ERAR_SMALL_BUF equ 20
ERAR_UNKNOWN equ 21
RAR_OM_LIST equ 0
RAR_OM_EXTRACT equ 1
RAR_SKIP equ 0
RAR_TEST equ 1
RAR_EXTRACT equ 2
RAR_VOL_ASK equ 0
RAR_VOL_NOTIFY equ 1
RAR_DLL_VERSION equ 3
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
; structures
; ~~~~~~~~~~
RARHeaderData STRUC
ArcName db 260 dup (0)
FileName db 260 dup (0)
Flags dd 0
PackSize dd 0
UnpSize dd 0
HostOS dd 0
FileCRC dd 0
FileTime dd 0
UnpVer dd 0
Method dd 0
FileAttr dd 0
lpCmtBuf dd 0
CmtBufSize dd 0
CmtSize dd 0
CmtState dd 0
RARHeaderData ENDS
RARHeaderDataEx STRUC
ArcName db 1024 dup (0)
ArcNameW db 1024 dup (0)
FileName db 1024 dup (0)
FileNameW db 1024 dup (0)
Flags dd 0
PackSize dd 0
PackSizeHigh dd 0
UnpSize dd 0
UnpSizeHigh dd 0
HostOS dd 0
FileCRC dd 0
FileTime dd 0
UnpVer dd 0
Method dd 0
FileAttr dd 0
lpCmtBuf dd 0
CmtBufSize dd 0
CmtSize dd 0
CmtState dd 0
Reserved dd 1024 dup (0)
RARHeaderDataEx ENDS
RAROpenArchiveData STRUC
lpArcName dd 0
OpenMode dd 0
OpenResult dd 0
lpCmtBuf dd 0
CmtBufSize dd 0
CmtSize dd 0
CmtState dd 0
RAROpenArchiveData ENDS
RAROpenArchiveDataEx STRUC
lpArcName dd 0
lpArcNameW dd 0
OpenMode dd 0
OpenResult dd 0
lpCmtBuf dd 0
CmtBufSize dd 0
CmtSize dd 0
CmtState dd 0
Flags dd 0
Reserved dd 32 dup (0)
RAROpenArchiveDataEx ENDS
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
; UNRARCALLBACK_MESSAGES enumeration
UCM_CHANGEVOLUME equ 0
UCM_PROCESSDATA equ 1
UCM_NEEDPASSWORD equ 2
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
; Processes
; ~~~~~~~~~
UnRARCallback PROTO :DWORD,:DWORD,:DWORD,:DWORD
ChangeVolProc PROTO :DWORD,:DWORD ;C calling convention ??
ProcessDataProc PROTO :DWORD,:DWORD ;C calling convention ??
RAROpenArchive PROTO :DWORD
RAROpenArchiveEx PROTO :DWORD
RARCloseArchive PROTO :DWORD
RARReadHeader PROTO :DWORD,:DWORD
RARReadHeaderEx PROTO :DWORD,:DWORD
RARProcessFile PROTO :DWORD,:DWORD,:DWORD,:DWORD
RARSetCallback PROTO :DWORD,:DWORD,:DWORD
RARSetChangeVolProc PROTO :DWORD,:DWORD
RARSetProcessDataProc PROTO :DWORD,:DWORD
RARSetPassword PROTO :DWORD,:DWORD
RARGetDllVersion PROTO
; =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
; that's it

View File

@@ -0,0 +1,114 @@
[Project]
Assembler=masm
Type=Win32 App
Description=Win32ASM UnRAR example
Backup=$P\Bak\
Group=1
GroupExpand=1
Res.rc=1
[Files]
1=unrar.Asm
2=unrar.Inc
3=
4=rsrc.RC
5=
[MakeFiles]
0=unrar.rap
1=rsrc.rc
2=unrar.asm
3=unrar.obj
4=rsrc.res
5=unrar.exe
6=unrar.def
7=unrar.dll
8=unrar.txt
9=unrar.lib
10=unrar.mak
11=unrar.hla
[MakeDef]
Menu=1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0
1=4,O,$B\RC.EXE /v,1
2=3,O,$B\ML.EXE /c /coff /Cp /nologo /I"$I",2
3=5,O,$B\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"$L",3,4
4=0,0,,5
5=rsrc.obj,O,$B\CVTRES.EXE,rsrc.res
6=*.obj,O,$B\ML.EXE /c /coff /Cp /nologo /I"$I",*.asm
7=0,0,\OllyDbg\OllyDbg,5
[Group]
Group=Added files,Assembly,Resources,Misc,Modules
1=2
2=2
3=
4=1
5=
[Size]
2=0,0,0,0,3180
1=0,0,1095,875,4
4=0,0,0,0,291
3=
5=
[Resource]
[Colref]
0=00FFFFFF
1=00FFFFFF
2=00FFFFFF
3=00FFFFFF
4=00FFFFFF
5=00FFFFFF
6=00FFFFFF
7=00FFFFFF
[Version-Inc]
Options=52
[BookMark]
0=
1=
2=
3=
4=
5=
6=
7=
8=
9=
[BreakPoint]
0=
[VersionControl]
Settings=1246
Milestones=129
MilestoneEvery=10
MilestoneEveryCurrent=0
MilestoneOnBuild=0.0.0.0
MilestoneOnTime=2
MilestoneOnDate=0
MilestoneOnDateWhen=1
MilestoneOnDateStatus=0
MilestoneOnDateDate=11
MilestoneOnDateTimeYear=2005
MilestoneOnDateTimeMonth=9
MilestoneOnDateTimeDate=10
MilestoneOnDateTimeHour=22
MilestoneOnDateTimeMin=17
MilestoneOnDateTimeSec=43
MilestoneOnDateTimeStatus=0
BackupLocation=C:\masm32\RadASM\Masm\Projects\VCBackups\
CompressionLevel=0
DefaultComment=Project $N, $Z, Backup Created On $D At $T.
ExcludeExt1=\
ExcludeExt2=\
ExcludeExt3=\
ExcludeExt4=\
FileVerLength=4
FileVer2Range=0
FileVer3Range=0
FileVer4Range=0
ProductVerLength=4
ProductVer2Range=0
ProductVer3Range=0
ProductVer4Range=0
[Collapse]
1=
4=
2=
[Find]
1="bExtracted"
2="unpSize"