能力值:
( LV2,RANK:10 )
|
-
-
26 楼
谢谢楼主分享。真是好东西哦。
|
能力值:
( LV5,RANK:60 )
|
-
-
27 楼
支持call 地址很简单的啊亲
计算一下你分配的内存和call指令位置
然后跟跳转一样写进去就行了。
|
能力值:
(RANK:10 )
|
-
-
28 楼
真心感谢楼主
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
支持开源,感谢楼主分享劳动成果!
|
能力值:
( LV5,RANK:65 )
|
-
-
30 楼
不错不错,以前找过没找到这种源码,今天无意之间发现了。感谢,学习一下!
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
这个能干什么坏事
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
祝贺荣登百度首页。
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
看看试试。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
支持!感谢楼主开源 !
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
不错,不错,感谢!感谢 ̄!!
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
好东西,支持
|
能力值:
( LV5,RANK:65 )
|
-
-
37 楼
非常好,通过学习这个代码,完成了自己的注入工具
这个XASM引擎,经过我的分析对比,发现就是OD的反汇编引擎重新封装的,比OD原版的好!
|
能力值:
( LV12,RANK:760 )
|
-
-
38 楼
汇编器一直用FASM.DLL的路过了
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
下载学习一下
|
能力值:
( LV3,RANK:20 )
|
-
-
40 楼
好东西,点个赞
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
谢谢分享
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
谢谢分享,就是看不懂
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
make
|
能力值:
( LV6,RANK:90 )
|
-
-
44 楼
Mark
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
十分感谢楼主分享的好东西,这东西我找了好久了,终于找到了... 在这里十分感谢楼主的无私分享 但是,楼主这个工具的CALL定位有问题 我分析了下源码,是有个逻辑错误 在CodeInjectDlg.cpp中的这个方法中
void CCodeInjectDlg::InjectBin(DWORD pid)
{
if(!AdjustPr())
{
print("提权失败");
return;
}
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, pid);
if ( !hProcess ) {
print("OpenProcess失败");
return ;
}
//LPVOID pParam = VirtualAllocEx(hProcess, NULL, 4, MEM_COMMIT, PAGE_READWRITE);
LPVOID pAddr = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if ( !pAddr)
{
print("VirtualAllocEx失败");
return;
}
CString tmp,str;
tmp.Format("开辟的地址:%08X",pAddr);
print(tmp);
print("机器码如下:");
char error[256] = {0};
int count = m_edit.GetLineCount();
BYTE buf[4096] = {0};
int j = 0;
int m = 0;
for(int i = 0;i<count;i++)
{
char cmd[256] = {0};
int len = m_edit.GetLine(i,cmd,256);
if(len==0) continue;
cmd[len] = '\0';
t_asmmodel t_asm;
j = m_asm.Assemble(cmd,(DWORD)pAddr+j,&t_asm,0,4,error);
if (j<=0)
{
tmp.Format("error=\"%s\"",error);
print(tmp);
}
for (int k=0; k<j; k++)
{
buf[m] = (BYTE)t_asm.code[k];
tmp.Format("%02X",buf[m]);
str = str + tmp;
m = m + 1;
}
print(str);
str = "";
}
buf[m] = 0x0c2;//ret 4
buf[m+1] = 0x04;
buf[m+2] = 0x00;
if (!WriteProcessMemory(hProcess, pAddr, buf, 4096, NULL)) {
print("WriteProcessMemory失败");
return;
}
DWORD dwThreadID;
DWORD dwParam = 0;
HANDLE hRemoteThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pAddr, NULL, 0, &dwThreadID);
if ( !hRemoteThread ) {
print("CreateRemoteThread失败");
return ;
}
CloseHandle(hRemoteThread);
CloseHandle(hProcess);
/*
mov ecx,0x00b450dc
mov ecx,[ecx]
push 1
mov eax,0x005DBC50
call eax
*/
} j = m_asm.Assemble(cmd,(DWORD)pAddr+j,&t_asm,0,4,error);
这个代码有问题,改成 j = m_asm.Assemble(cmd,(DWORD)pAddr+m,&t_asm,0,4,error); 这样就好了,CALL很准,没问题,命令很全,也很方便
|
能力值:
( LV3,RANK:20 )
|
-
-
46 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
谢谢分享
|
能力值:
( LV5,RANK:70 )
|
-
-
49 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
谢谢分享!~~
|