首页
社区
课程
招聘
[旧帖] 很有意思,摸过文件后不能编译通过? 0.00雪花
发表于: 2011-11-29 20:23 1877

[旧帖] 很有意思,摸过文件后不能编译通过? 0.00雪花

2011-11-29 20:23
1877
我翻出以前在看雪下的一个注入程序源码,发现不能编译通过了。提示找不到streambuf文件。于是我下载了一个到对应路径,再编译还是不行。最后我重新解压文件,用新的文件编译,居然通过了。打开debug文件夹点击xx.exe,可以运行!!可是当我满怀期待的把要注入的程序名改了后,又出现错误了。不单是程序名不能改,就算在源文件加个空格然后再去掉,都不能编译通过了。实在搞不懂这是什么原因。哪位大牛帮忙解决了问题,小女子愿意以身相许了

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
哪个帮我编译看看?
#include <iostream>
#include <windows.h>
#include <Tlhelp32.h>

using namespace std;

bool EnablePrivilege( PCSTR name )
{//提升进程权限

        //获得指定的权限值
        TOKEN_PRIVILEGES priv = { 1, { 0, 0, SE_PRIVILEGE_ENABLED } };
        bool bLookup = LookupPrivilegeValue( NULL, name, &priv.Privileges[0].Luid );
        if( !bLookup )
        {
                //OutLog("查找指定权限值失败");
                return false;
        }

        //打开进程的访问标记
        HANDLE hToken = NULL;
        bool bOpenToken = OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken );
        if( !bOpenToken )
        {
                //OutLog("打开进程的访问标记失败");
                return false;
        }

        //调整权限
        bool bAdjustpriv = AdjustTokenPrivileges( hToken, false, &priv, sizeof( priv ), 0, 0 );
        if( !bAdjustpriv )
        {
                //OutLog("调整权限失败");
                CloseHandle( hToken );
                return false;
        }
        CloseHandle( hToken );

        return true;
}

void main()
{
        char lpDllName[100] = {0};
        GetCurrentDirectory( 100, lpDllName );
        strcat( lpDllName, "\\InjectProcessDll.dll" );
        cout<<"Dll当前路径:"<<lpDllName<<endl;

        HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
        if( hSnapshot == NULL )
        {
                cout<<"Create Snapshot false."<<endl;
                cin.get();
                return;
        }
        PROCESSENTRY32 stProcessEntry32 = {0};
        stProcessEntry32.dwSize = sizeof(PROCESSENTRY32);
        Process32First( hSnapshot, &stProcessEntry32 );
        bool bFind = false;
        do
        {
                if( strncmp( stProcessEntry32.szExeFile, "explorer.exe", strlen("explorer.exe") ) == 0 )
                {
                        bFind = true;
                        break;
                }
        }while( Process32Next( hSnapshot, &stProcessEntry32 ) );
        CloseHandle( hSnapshot );
        if( !bFind )
        {
                cout<<"查找explorer进程失败."<<endl;
                cin.get();
                return;
        }

        DWORD dwPId = stProcessEntry32.th32ProcessID;
        HANDLE hProcess = OpenProcess(  PROCESS_ALL_ACCESS, false, dwPId );
        if( hProcess == NULL )
        {
                cout<<"打开explorer进程失败."<<endl;
                cin.get();
                return;
        }
        LPVOID lpDllNameAddr = VirtualAllocEx( hProcess, NULL, strlen(lpDllName)+1, MEM_COMMIT, PAGE_READWRITE );
        if( lpDllNameAddr == NULL )
        {
                cout<<"explorer进程中申请内存失败."<<endl;
                CloseHandle(hProcess);
                cin.get();
                return;
        }
        cout<<"在目标进程:"<<stProcessEntry32.szExeFile<<"中申请的空间地址:"<<hex<<lpDllNameAddr<<endl;
        DWORD dwRes = 0;
        bool bRet = WriteProcessMemory( hProcess, lpDllNameAddr, lpDllName, strlen(lpDllName), &dwRes );
        if( !bRet )
        {
                cout<<"explorer进程写信息失败."<<endl;
                VirtualFreeEx( hProcess, lpDllNameAddr, strlen(lpDllName)+1, MEM_DECOMMIT );
                CloseHandle(hProcess);
                cin.get();
                return;

        }
        HMODULE hModuleKernel32 = GetModuleHandle("kernel32.dll");
        DWORD lp = (DWORD)LoadLibraryA;
        LPTHREAD_START_ROUTINE lpLoadLibraryAddr = (LPTHREAD_START_ROUTINE)GetProcAddress( hModuleKernel32, "LoadLibraryA" );
        if( lpLoadLibraryAddr != NULL )
        {
                cout<<"获得函数地址:"<<hex<<lpLoadLibraryAddr<<endl;
                HANDLE hRemote = CreateRemoteThread( hProcess, NULL, 0, lpLoadLibraryAddr, lpDllNameAddr, 0, NULL );
                if( hRemote != NULL )
                {
                        cout<<"创建远程线程成功,句柄:"<<hex<<hRemote<<endl;
                        WaitForSingleObject( hRemote, INFINITE );
                        CloseHandle( hRemote );
                        cout<<"远程线程运行结束"<<endl;
                        cin.get();

                }
                else
                        cout<<"创建远程线程失败."<<endl;
        }
        else
                cout<<"获取LoadLibrary地址失败"<<endl;

       
        VirtualFreeEx( hProcess, lpDllNameAddr, strlen(lpDllName)+1, MEM_DECOMMIT );
        CloseHandle(hProcess);
        cin.get();
        return;

}
2011-11-29 20:32
0
雪    币: 31
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
不会弄呀...也不知道你说的是什么.
2011-11-29 20:36
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我的意思是说,这份源码只有重新解压出来才能编译通过,改过任何一个地方或者复制的都不能编译通过。不知道是不是我编译器的原因。想请你们帮编译看看能不能过
2011-11-29 20:41
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
把编译报错发出来。
2011-11-29 21:12
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
e:\vc\visualc\vc60\vc6cn\vc98\include\ios(9) : fatal error C1083: Cannot open include file: 'streambuf': No such file or directory
执行 cl.exe 时出错.
我有这个文件,路径也没错,而且把源文件解压出来后,打开编译没问题,就是不能改。
2011-11-29 21:24
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
不要用iostream,,改成下面的
#include <iostream.h>
#include <windows.h>
#include <Tlhelp32.h>

去掉using namespace std
2011-11-29 22:23
0
雪    币: 705
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
换编译器吧,vc6老古董编译器了
2011-11-29 22:43
0
雪    币: 159
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
LZ你可以去下载一个VS,虽然大了点,要么就重新下载另外一个版本的VC,还有,LZ说的“小女子愿意以身相许了”,别人给你解答问题你就这样?那你对技术也太痴迷了吧?
2011-11-30 09:09
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
重新下载一个源码,编译恢复正常了。再次打开上次编译不过的源文件又能通过编译。只是没办法注入成功,唉,去年才发出的源码现在就不能用了。
2011-11-30 17:58
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看过,学习中
2011-12-1 09:15
0
雪    币: 47
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
Hi  如果你的系统是win7的话 CreateRemoteThread调用是不会成功的
2011-12-1 09:22
0
雪    币: 107
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
和你操作系统版本 相关吧??环境说一下..

还有.一看就是人妖....你那身子谁要?
2011-12-1 09:56
0
雪    币: 29
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
搜了下楼主id,果然是人妖
2011-12-1 13:04
0
雪    币: 4580
活跃值: (992)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
哥是来鄙视妖妖的说
2011-12-1 14:12
0
游客
登录 | 注册 方可回帖
返回
//