能力值:
( LV9,RANK:220 )
2 楼
themida写loader应该可以直接用CreateProcess的,你是不是加了DEBUG_ONLY_THIS_PROCESS?
能力值:
( LV9,RANK:170 )
3 楼
最初由 noword_forever 发布 themida写loader应该可以直接用CreateProcess的,你是不是加了DEBUG_ONLY_THIS_PROCESS?
不是themida的检测,这原程序中有检测。
用了几个办法都没办法加载起来,只好注入到explorer,让explorer启示录动它了。
注入explorer真是麻烦,不知道有没有更好的办法。
能力值:
( LV2,RANK:10 )
4 楼
野猪力量注入!!!
能力值:
( LV13,RANK:410 )
5 楼
野猪力量注入!!!
能力值:
( LV9,RANK:330 )
6 楼
野猪力量再注入!!!
能力值:
(RANK:650 )
7 楼
呵呵,完全不用这么麻烦D
不用0环,不用注入
只要稍微做些手脚,父进程就是Explorer了
能力值:
( LV9,RANK:170 )
8 楼
最初由 shoooo 发布 呵呵,完全不用这么麻烦D 不用0环,不用注入 只要稍微做些手脚,父进程就是Explorer了
我这就去找火柴棍把耳朵掏干净点,认真听指点,shoooo的每一行代码都闪耀着火花
能力值:
(RANK:650 )
9 楼
好像heXer曾经说过的
貌似对DEBUG方式的无效
#include <windows.h>
#include <tlhelp32.h>
#include <commdlg.h>
#pragma comment (lib, "comdlg32.lib")
#pragma comment (linker, "/filealign:0x200")
#pragma comment (linker, "/subsystem:windows")
#pragma comment (linker, "/entry:entry")
void AdjustPrivilege(int pid, BOOL bEnable)
{
HANDLE hProcess;
HANDLE hToken=0;
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = 0;
if (bEnable)
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (LookupPrivilegeValue(NULL, "SeDebugPrivilege", &tkp.Privileges[0].Luid))
{
if (hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid))
{
if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken))
{
if (AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL))
{
CloseHandle(hToken);
}
}
CloseHandle(hProcess);
}
}
}
DWORD FindExplorer()
{
HANDLE hC;
DWORD i;
BOOL Next;
char szName[MAX_PATH];
PROCESSENTRY32 p32 = {sizeof(p32)};
hC = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
Next = Process32First(hC, &p32);
i = 0;
while (Next)
{
wsprintf(szName, "%s", p32.szExeFile);
if (lstrcmpi(szName, "EXPLORER.EXE") == 0)
return p32.th32ProcessID ;
Next = Process32Next(hC, &p32);
i++;
}
CloseHandle(hC);
return 0;
}
HANDLE hProcess;
DWORD ZwCP;
DWORD ZwCPEx;
DWORD NoCP;
DWORD NoCPEx;
void __declspec(naked) FuckZwCP()
{
__asm
{
mov eax, hProcess
mov [esp+0x10], eax
mov eax, NoCP;
push ZwCP;
add dword ptr [esp], 5
retn
}
}
void __declspec(naked) FuckZwCPEx()
{
__asm
{
mov eax, hProcess
mov [esp+0x10], eax
mov eax, NoCPEx;
push ZwCPEx;
add dword ptr [esp], 5
retn
}
}
void Patch()
{
DWORD odpt;
ZwCP = (DWORD)GetProcAddress(GetModuleHandle("ntdll.dll"), "ZwCreateProcess");
ZwCPEx = (DWORD)GetProcAddress(GetModuleHandle("ntdll.dll"), "ZwCreateProcessEx");
if (ZwCP != 0)
{
NoCP = *(LPDWORD)(ZwCP+1);
VirtualProtect((LPVOID)ZwCP, 5, PAGE_EXECUTE_READWRITE, &odpt);
*(LPBYTE)(ZwCP+0x00) = 0xE9;
*(LPDWORD)(ZwCP+0x01) = (DWORD)FuckZwCP - ZwCP - 5;
}
if (ZwCPEx != 0)
{
NoCPEx = *(LPDWORD)(ZwCPEx+1);
VirtualProtect((LPVOID)ZwCPEx, 5, PAGE_EXECUTE_READWRITE, &odpt);
*(LPBYTE)(ZwCPEx+0x00) = 0xE9;
*(LPDWORD)(ZwCPEx+0x01) = (DWORD)FuckZwCPEx - ZwCPEx - 5;
}
}
void entry()
{
AdjustPrivilege(GetCurrentProcessId(), TRUE);
DWORD Pid;
Pid = FindExplorer();
if (Pid == 0)
{
return ;
}
hProcess = OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION | PROCESS_CREATE_PROCESS, FALSE, Pid);
if (hProcess == NULL)
{
return ;
}
Patch();
OPENFILENAME ofn = { sizeof(ofn) };
char szFilter[] = "EXE Files\0*.EXE\0\0";
char szFileName[MAX_PATH];
char szFilePath[MAX_PATH];
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFileName;
ofn.nFilterIndex = 1;
ofn.lpstrFile[0] = 0;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrTitle = "Loader";
ofn.lpstrFilter = szFilter;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST;
if (!GetOpenFileName(&ofn))
{
return ;
}
strcpy(szFilePath, szFileName);
*(strrchr(szFilePath, '\\')+1) = 0; //神奇,贴出来后两个反的变成一个了
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi = {0};
CreateProcess(NULL, szFileName, NULL, NULL, FALSE, 0, NULL, szFilePath, &si, &pi);
WaitForSingleObject(pi.hProcess, INFINITE);
ExitProcess(0);
}
上传的附件:
能力值:
( LV9,RANK:170 )
10 楼
THX verrry much shoooo,学习。。。
能力值:
( LV9,RANK:170 )
11 楼
试了一下,果然行。爽!
能力值:
( LV9,RANK:3410 )
12 楼
可以 SMC
能力值:
( LV9,RANK:170 )
13 楼
最初由 fly 发布 可以 SMC
这么说fly大侠还有其它办法.给点思路.
能力值:
( LV9,RANK:3410 )
14 楼
层层解码层层Patch就行了
原理都是一样的啊
能力值:
( LV9,RANK:170 )
15 楼
在网上找关于这方面资料时,
发现这个问题也是360给360安全卫士程序员志愿者出的问题:
http://blog.csdn.net/dedodong/archive/2006/10/07/1323925.aspx
能力值:
( LV9,RANK:170 )
16 楼
最初由 fly 发布 层层解码层层Patch就行了 原理都是一样的啊
对,这样也行,就是要多检查几处,多PATCH几个地方。不过要是被加壳程序有多种方法检测,改起来就有点麻烦了,一把他们得全找出来,然后再得修改。
能力值:
( LV2,RANK:10 )
17 楼
能力值:
( LV6,RANK:90 )
18 楼
强贴留名``
能力值:
( LV9,RANK:250 )
19 楼
期待脱壳机.
否则到处都是themida.
能力值:
( LV9,RANK:250 )
20 楼
期待脱壳机.
否则到处都是themida,连俺也顺手用上它了。
能力值:
( LV9,RANK:970 )
21 楼
嘿嘿 好好研究下:)