nocall,一段昔日的代码,青山依旧在,几度夕阳红...
来源:互联网 发布:淘宝怎么搜好看的鞋子 编辑:程序博客网 时间:2024/05/17 04:02
#include <Masm.au3>
#include <Array.au3>
#AutoIt3Wrapper_run_debug_mode=Y
;$jcid=WinGetProcess ( "Element Client")
Dim $v_ProcessID,$v_EAX,$v_EBX,$v_ECX,$v_EDX,$v_ESI,$tmp_Addr
$guaiwu=2147488188;怪物ID
$Hawd = WinGetHandle("Element Client")
GetWindowThreadProcessId($Hawd, $pid)
$hd = OpenProcess($PROCESS_ALL_ACCESS, False, $pid)
$v_ProcessID=$hd
;NoCall(0x005B0A80)
$PGetGwCallParam=DllStructCreate ( "dword EDX;dword EAX;ulong zx;ulong zy;ulong zz")
DllStructSetData($PGetGwCallParam,"EDX",$guaiwu);把怪物ID送入结构中
$c=DllStructGetPtr ( $PGetGwCallParam,"EDX");获得EDX的地址
$vhandle=DllCallbackRegister ( "GetGwCall", "int", "hwnd;lparam" )
$d=DllCallbackGetPtr($vhandle);获得函数的地址
Funin($Hawd,$d,$c,StringLen($guaiwu))
DllCallbackFree ( $vhandle )
;Mov_EAX_DWORD_Ptr($address) 这样才对Mov eax,[$address] 的意思!
;然后再Call_Eax()
Func Nocall($pDaima)
Local $v_TempppHandle,$v_Num
$v_TempppHandle = CreateRemoteThread($v_ProcessID, 0, 0,$pDaima, 0, 0, $v_num)
WaitForSingleObject($v_TempppHandle, $INFINITE);
CloseHandle($v_TempppHandle);
CloseHandle($v_ProcessID);
EndFunc
Func Funin($InHWND,$Funcv,$Param,$ParamSize)
Local $ThreadAdd, $ParamAdd,$hThread,$ThreadID,$lpNumberOfBytes
; $v_ProcessID = OpenProcess($PROCESS_ALL_ACCESS, False, $v_ProcessID);//打开被注入的进程
$ThreadAdd = VirtualAllocEx($v_ProcessID, 0, 4096, $MEM_COMMIT, $PAGE_READWRITE);
$tmp_Addr=$ThreadAdd
WriteProcessMemory($v_ProcessID, $ThreadAdd, $Funcv, 4096, $lpNumberOfBytes); //写入函数地址
$ParamAdd = VirtualAllocEx($v_ProcessID, 0, $ParamSize, $MEM_COMMIT, $PAGE_READWRITE);
WriteProcessMemory($v_ProcessID, $ParamAdd, $Param, $ParamSize, $lpNumberOfBytes); //写入参数地址
$hThread = CreateRemoteThread($v_ProcessID,0, 0, $ThreadAdd, $ParamAdd, 0, $lpNumberOfBytes); //创建远程线程
WaitForSingleObject($hThread, $INFINITE);//等待线程结束
VirtualFreeEx($v_ProcessID, $ThreadAdd, 0, $MEM_RELEASE);
VirtualFreeEx($v_ProcessID, $ParamAdd, 0, $MEM_RELEASE); //释放申请的地址
CloseHandle($hThread);
CloseHandle($v_ProcessID); //关闭打开的句柄
EndFunc
Func GetGwCall()
Local $edx1,$address
$address=Ptr(0x583980)
;$edx1 = DllStructGetData ( $PGetGwCallParam, "EDX");DllStructGetPtr ( $PGetGwCallParam,"EDX");
$edx1=DllStructGetPtr ( $PGetGwCallParam,"EDX");
Pushad()
Mov_ESI($edx1)
;mov esi, edx1
Push_ESI()
;push esi
Mov_ECX_DWORD_Ptr(0x009497B4)
;mov ecx, dword ptr [$009497B4]
Mov_ECX_DWORD_Ptr_ECX_Add(0x20)
;mov ecx, dword ptr [ecx+$20]
Add_ECX(0x0D4)
;add ecx,$D4
;Mov_EAX($address)
;Call_EAX()
Call_Ptr($address)
;call address
Popad()
;popad;
ret()
Run_ASM($Hawd)
Return(0)
EndFunc
Func Call_Ptr($i) ;Call 地址
;~算法:要调用代码的地址 - 自身地址 - 5 =e8后面的数
;~例:OD里:0042AAFC|E8 D7790000|Call 004324D8
;~要调用代码的地址=004324D8
;~自身地址=0042AAFC
;最终算法为:004324D8-0042AAFC-5=79D7
;再把79D7高地位转换,就得出了D7790000
;再加上E8这个CALL代码,得出:E8 D7790000
$x="0x"&Hex($i-$tmp_Addr-5)
$OPcode=$OPcode & "E8" & Exchange($x, 8)
$OPcode=$OPcode & "E8" & $i
EndFunc
- nocall,一段昔日的代码,青山依旧在,几度夕阳红...
- 青山依旧在,几度夕阳红
- 落叶几度夕阳红,门掩深林中
- 青山依旧在——从光荣到KOEI
- Ebay是扇窗,几度风雨,依旧好风光!
- 文青山在自动化测试空间的博客
- 在JVM退出的时候,执行一段特定的代码。
- 一段不可思议的代码
- 一段写晕掉的代码
- 一段好玩的代码
- 一段有趣的代码
- 一段漏洞百出的代码
- 一段弃暗投明的代码
- treeview的一段代码
- 一段分页的代码
- 一段简单的代码
- 一段smc的代码
- 一段好的代码
- 用JQuery 访问JSON动态生成ASP.NET控件
- http://hi.baidu.com/feixue
- printf()和标准输出
- POI(3)
- POI(4)
- nocall,一段昔日的代码,青山依旧在,几度夕阳红...
- Linux操作系统内核启动参数详细解析
- 别人的优秀博客集锦
- 周思博趣谈软件——给计算机系学生的建议
- 删除数据库中重复数据的几个方法
- 11-02-09
- 根文件系统的启动分析
- Linux操作系统自如的装卸内核模块
- POI的一个例子