• 2228阅读
  • 1回复

小玩具,征途物品察看器 [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2014-06-03
comment * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-  
网游征途的物品察看器。创建于2008年9月7日。  
借助工具:  
CE v5.2  
MASM v7.0  
编译选项:  
ML.EXE /c /coff /Cp /nologo  
链接选项:  
LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0  

原理:  
通过PE文件映像,搜索特征代码。  

By FASM  
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- *  
.386  
.model flat, stdcall ;32 bit memory model  
option casemap :none ;case sensitive  

include windows.inc  
include kernel32.inc  
include user32.inc  
include Comctl32.inc  
include advapi32.inc  

includelib kernel32.lib  
includelib user32.lib  
includelib Comctl32.lib  
includelib advapi32.lib  

DlgProc PROTO :HWND,:UINT,:WPARAM,:LPARAM  
ScanBaseAddress PROTO :DWORD  
OpenTagProcess PROTO  
ProcessAdjust PROTO  
AddlistItem PROTO :DWORD,:DWORD,DWORD  
InitListView PROTO :DWORD  
ViewWp PROTO :DWORD  


CTEXT MACRO y:VARARG  
LOCAL sym  

FASM segment dword private 'DATA'  
IFIDNI <y>,<>  
sym db 0  
ELSE  
sym db y,0  
ENDIF  
FASM ends  

EXITM <OFFSET sym>  
ENDM  

ZTWPVIEW struct  
hProcess dd ?  
hList dd ?  
WpStartAddress dd ?  
WpEndAddress dd ?  
MyHwnd dd ?  
WpNum dd ?  
ZTWPVIEW ends  


.const  

IDD_DIALOG1 equ 101  
IDC_BTN1 equ 1001  
IDC_LSV1 equ 1002  
TAGPROCESS_IMAGEBASEADDRESS equ 0400000h  
WP_STRUCT_SIZE equ 0370h  
STR_TEXT_OFFSET equ 01c8h  

;#########################################################################  

.data  

hInstance dd ?  
szColName db '物品名称',0  
szColSize db '作用描述',0  
szTagName db 'zhengtu.dat',0  

ViewStruct ZTWPVIEW <?>  
;#########################################################################  
.code  

start:  

invoke GetModuleHandle,NULL  
mov hInstance,eax  

invoke InitCommonControls  
invoke RtlZeroMemory,offset ViewStruct,sizeof ZTWPVIEW  
invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL  
invoke ExitProcess,0  

ScanBaseAddress proc uses ebx esi edi pView: DWORD  

LOCAL PE_BASE: IMAGE_DOS_HEADER  
LOCAL PE_FILE: IMAGE_FILE_HEADER  
LOCAL PE_SECTION: IMAGE_SECTION_HEADER  
LOCAL TempBuf[2],hProcess: DWORD  

mov edi,pView  
mov eax,(ZTWPVIEW ptr[edi]).hProcess  
mov hProcess,eax  

invoke ReadProcessMemory,hProcess ,TAGPROCESS_IMAGEBASEADDRESS,addr PE_BASE,sizeof IMAGE_DOS_HEADER,0  
mov ebx,PE_BASE.e_lfanew  
add ebx,TAGPROCESS_IMAGEBASEADDRESS  

mov ecx,ebx  
add ecx,sizeof DWORD ;让过PE标志  

invoke ReadProcessMemory,hProcess,ecx,addr PE_FILE,sizeof IMAGE_FILE_HEADER,0  

add ebx,sizeof IMAGE_NT_HEADERS ;直接读取节内容  

mov si,PE_FILE.NumberOfSections  
movzx esi,si  

.while esi  

invoke ReadProcessMemory,hProcess,ebx,addr PE_SECTION,sizeof IMAGE_SECTION_HEADER,0  
.if PE_SECTION.Characteristics == 0e0000060h && PE_SECTION.VirtualAddress > 600000h  

push esi  
push ebx  

mov ebx,PE_SECTION.VirtualAddress  
add ebx,130000h  
mov esi,PE_SECTION.Misc.VirtualSize  
sub esi,130000h  

.while esi  
invoke ReadProcessMemory,hProcess,ebx,addr TempBuf,8,0  
.if (TempBuf > 400000h && TempBuf < 7fffffffh )  
mov ecx,TempBuf  
mov (ZTWPVIEW ptr[edi]).WpStartAddress,ecx  
add ecx,4  
invoke ReadProcessMemory,hProcess,ecx , addr TempBuf,4,0  

.if (TempBuf == 0DFCFDEC3h)  

lea eax,TempBuf + 4  
mov eax,[eax]  
mov (ZTWPVIEW ptr[edi]).WpEndAddress,eax  

sub eax,(ZTWPVIEW ptr[edi]).WpStartAddress  
sub edx,edx  
mov ecx,WP_STRUCT_SIZE  
div ecx  
mov (ZTWPVIEW ptr[edi]).WpNum,eax  

.break  
.elseif  
sub eax,eax  
xchg eax,(ZTWPVIEW ptr[edi]).WpStartAddress  
.endif  
.endif  
sub esi,sizeof DWORD  
add ebx,sizeof DWORD  
.endw  
pop ebx  
pop esi  
.endif  

mov eax,(ZTWPVIEW ptr[edi]).WpStartAddress  
.if eax  
.break  
.endif  
dec esi  
add ebx,sizeof IMAGE_SECTION_HEADER  
.endw  

xchg eax,pView  

ret  

ScanBaseAddress endp  

OpenTagProcess proc  

LOCAL lpids: DWORD  
LOCAL tagPROCESSENTRY32: PROCESSENTRY32  

invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0  
mov lpids,eax  

invoke Process32First,lpids,addr tagPROCESSENTRY32  


@@:  
invoke lstrcmpi,addr tagPROCESSENTRY32.szExeFile,offset szTagName  
cmp eax,0  
jz @F  
invoke Process32Next,lpids,addr tagPROCESSENTRY32  

.if eax  
jmp @B  
.elseif  
mov eax,0  
jmp Over  
.endif  

@@:  
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,tagPROCESSENTRY32.th32ProcessID  

Over:  
ret  

OpenTagProcess endp  

ProcessAdjust proc uses ebx  

LOCAL tp: TOKEN_PRIVILEGES  
LOCAL RetByte,hToKen: DWORD  

invoke RtlZeroMemory,addr tp,sizeof TOKEN_PRIVILEGES  

invoke GetCurrentProcess  
push eax  
invoke GetLastError  
pop eax  
mov ecx,eax  
invoke OpenProcessToken,ecx,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,addr hToKen  
invoke GetLastError  
mov tp.PrivilegeCount,1  

invoke LookupPrivilegeValue,NULL,CTEXT("SeDebugPrivilege"),addr tp.Privileges[0].Luid  
invoke GetLastError  
push SE_PRIVILEGE_ENABLED  
pop tp.Privileges[0].Attributes  

invoke AdjustTokenPrivileges,hToKen,FALSE, addr tp,sizeof TOKEN_PRIVILEGES,NULL,RetByte  
invoke GetLastError  

invoke CloseHandle,hToKen  
ret  

ProcessAdjust endp  

AddlistItem proc hWnd: DWORD,pSzText: DWORD,Item: DWORD  

LOCAL lvi:LV_ITEM  

invoke RtlZeroMemory,addr lvi,sizeof LV_ITEM  

mov lvi.imask, LVIF_TEXT  
push Item  
pop lvi.iSubItem  
push pSzText  
pop lvi.pszText  
mov lvi.iItem,eax  

.if Item  
invoke SendDlgItemMessage, hWnd, IDC_LSV1,LVM_SETITEM, 0, addr lvi  
.elseif  
invoke SendDlgItemMessage, hWnd, IDC_LSV1,LVM_INSERTITEM, 0, addr lvi  
.endif  


ret  
AddlistItem endp  

;########################################################################  
InitListView proc hWnd:DWORD  

local lvc: LV_COLUMN  
local hList: DWORD  

invoke GetDlgItem,hWnd,IDC_LSV1  
mov hList,eax  

mov eax, LVS_EX_FULLROWSELECT or LVS_EX_HEADERDRAGDROP or LVS_EX_GRIDLINES  

INVOKE SendMessage, hList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, eax  

INVOKE SendMessage, hList, LVM_SETTEXTCOLOR, 0, 0  
INVOKE SendMessage, hList, LVM_SETBKCOLOR, 0, 0ffffffh  
INVOKE SendMessage,hList, LVM_SETTEXTBKCOLOR, 0,0ffffffh  

mov lvc.imask, LVCF_TEXT or LVCF_WIDTH  
mov lvc.pszText, offset szColName  
mov lvc.lx, 150  
INVOKE SendMessage, hList, LVM_INSERTCOLUMN, 0, addr lvc  
or lvc.imask, LVCF_FMT  
mov lvc.fmt, LVCFMT_LEFT  
mov lvc.pszText, offset szColSize  
mov lvc.lx, 450  
INVOKE SendMessage, hList, LVM_INSERTCOLUMN, 1, addr lvc  

ret  
InitListView endp  

ViewWp proc uses esi pWpStruct: DWORD  

LOCAL Buffer[WP_STRUCT_SIZE]: BYTE  
LOCAL CurrentItem: DWORD  

invoke RtlZeroMemory,addr Buffer,WP_STRUCT_SIZE  

mov esi,pWpStruct  

assume esi: ptr ZTWPVIEW  

mov ecx,[esi].WpNum  
push [esi].WpStartAddress  
pop CurrentItem  

.while (ecx)  
push ecx  
invoke ReadProcessMemory,[esi].hProcess,CurrentItem,addr Buffer,WP_STRUCT_SIZE,0  

lea ecx,Buffer  
add ecx,4  
invoke AddlistItem,[esi].MyHwnd,ecx,0  

lea ecx,Buffer  
add ecx,STR_TEXT_OFFSET  
invoke AddlistItem,[esi].MyHwnd,ecx,1  

mov eax,CurrentItem  
add eax,WP_STRUCT_SIZE  
xchg eax,CurrentItem  

pop ecx  
dec ecx  
.endw  

invoke CloseHandle,[esi].hProcess  
assume esi: nothing  

ret  

ViewWp endp  

DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM  

mov eax,uMsg  
.if eax==WM_INITDIALOG  
invoke InitListView,hWin  
.elseif eax==WM_COMMAND  
mov eax,wParam  
.if ax == IDC_BTN1  

invoke ProcessAdjust  
.if ! ViewStruct.hProcess  
invoke OpenTagProcess  
mov ViewStruct.hProcess,eax  
.endif  

invoke ScanBaseAddress,offset ViewStruct  
push hWin  
pop ViewStruct.MyHwnd  

invoke CreateThread,NULL,0,offset ViewWp,offset ViewStruct,0,NULL  
invoke CloseHandle,eax  

.endif  
.elseif eax==WM_CLOSE  
invoke EndDialog,hWin,0  
mov eax,ViewStruct.hProcess  
.if eax  
invoke CloseHandle,eax  
.endif  
.else  
mov eax,FALSE  
ret  
.endif  
mov eax,TRUE  
ret  

DlgProc endp  

end start  

ZT_WP.rar    
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线asd123

只看该作者 沙发  发表于: 2017-10-26
想要发  来彩92
注册链接:http://t.cn/R0LF8nD
(复制在浏览器打开)
下载APP即送19元彩金
【彩92】彩种齐全,秒冲秒提,绝对稳定
【彩92】更有感恩回馈礼品派送,您还在等什么?
更多优惠:http://t.cn/R0LF8nD
详情咨询QQ943638892  
<br/>牛仔加好友验证筛选器是强制加QQ好友的神器















1
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个