首页
社区
课程
招聘
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-7-2 11:28
0
[求助]高考落榜,读什么IT学校好>??
168舰:000870773121949,000870763680289

568舰:000870773121697,000870764938481

887舰:000870773122234,000870764938526

通过他们联系更方便。
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-7-1 23:26
0
[求助]高考落榜,读什么IT学校好>??
科锐可以的,看看这个坛子里科锐班同学的课业设计就能感受到他们的学习氛围了,推荐一下。
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-26 08:53
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-18 09:15
0
[求助]调用EXE中的函数......
当然是根据做为DLL使用的EXE的基址确定。不好意思很绕口的问题我一般大脑自动过滤很严重
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-17 21:43
0
[求助]调用EXE中的函数......
第一句话问的那三个问号太长了,我看不过来,也不知道对不对。第二个句子理解的是对的。修改导入表这个很简单的。麻烦的是处理需要重定位的别的一些地址,比如hh.exe里原来可能有个这:

push 0x401234,而这个0x401234地方指向一个字符串。这时候你就要修正这个立即数了,让他指向正确的内存位置,这个就有点麻烦了。
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-16 09:26
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-15 14:06
0
[求助]调用EXE中的函数......
我在这个帖子里发的附件,就是一个exe加载另外一个exe,然后直接在自己镜像内把那个exe跑起来了,不过被人说成简单一毛的东西,我也懒得说什么了。

http://bbs.pediy.com/showthread.php?t=99799
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-15 13:58
0
[求助]调用EXE中的函数......
这个原理还是很简单的,把目标exe可以随便加载,比如读文件,或者干脆LoadLibrary就可以了。然后搜索其导入表,都修改成正确的指针就行了。然后再修改exe内需要重定位的地址,这个也不麻烦的。

修正重定位表的代码大概如下:

        hMod = LoadLibrary("aa.exe");

        if (!hMod)
                return false;

        pDosHeader = (PIMAGE_DOS_HEADER)hMod;
        pNTHeaders = (PIMAGE_NT_HEADERS)((BYTE *)hMod + pDosHeader->e_lfanew);
        pOptHeader = (PIMAGE_OPTIONAL_HEADER)&(pNTHeaders->OptionalHeader);

        pImportDescriptor = (PIMAGE_IMPORT_DESCRIPTOR)((BYTE *)hMod + pOptHeader->DataDirectory[1].VirtualAddress);

        bRet = TRUE;

        while(pImportDescriptor->FirstThunk)
        {
                //获取dll名称
                char * dllname = (char *)((BYTE *)hMod + pImportDescriptor->Name);

                pThunkData = (PIMAGE_THUNK_DATA)((BYTE *)hMod + pImportDescriptor->OriginalFirstThunk);

                int no = 1;
                while(pThunkData->u1.Function)
                {
                        if ((pThunkData->u1.Ordinal &  IMAGE_ORDINAL_FLAG) != IMAGE_ORDINAL_FLAG)
                        {
                                //获取函数名称
                                funname = (char *)((BYTE *)hMod + (DWORD)pThunkData->u1.AddressOfData + 2);
                                if (!GetModuleHandle(dllname))
                                {
                                        LoadLibrary(dllname);
                                }
                                myaddr = (int*)GetProcAddress(GetModuleHandle(dllname), funname);
                        }

                        PDWORD lpAddr = (DWORD *)((BYTE *)hMod + (DWORD)pImportDescriptor->FirstThunk) +(no-1);

                        MEMORY_BASIC_INFORMATION  mbi;
                        VirtualQuery(lpAddr,&mbi,sizeof(mbi));
                        VirtualProtect(lpAddr,sizeof(DWORD),PAGE_READWRITE,&dwOLD);

                        if (WriteProcessMemory(GetCurrentProcess(), lpAddr, &myaddr, sizeof(DWORD), NULL) == FALSE)
                        {
                                bRet = FALSE;
                                break;
                        }

                        VirtualProtect(lpAddr,sizeof(DWORD),dwOLD,0);

                        no++;
                        pThunkData++;
                }

                pImportDescriptor++;
        }

修正需要重定位的地址和数据:

        for (int i = 0; i < xxx; i++)
        {
                lpAddr = (PDWORD)(RelocAll[i] + (DWORD)hMod);

                VirtualQuery(lpAddr,&mbi,sizeof(mbi));
                VirtualProtect(lpAddr,sizeof(DWORD),PAGE_READWRITE,&dwOLD);

                ReadProcessMemory(hProcess, (LPCVOID)lpAddr, &dwOrg, sizeof(DWORD), &dwRetCount);

                dwOrg = dwOrg - 0x400000;
                dwOrg = dwOrg + (DWORD)hMod;

                if (WriteProcessMemory(hProcess, (void*)lpAddr, &dwOrg, sizeof(DWORD), NULL) == 0)
                        bRet = false;
        }
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-11 18:06
0
破解BestCrypt v8.20.6.2
用这种高级软件加密文件,会不会把文件搞的损坏没法恢复呢?
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-10 19:57
0
[分享]自动反病毒分析工具
是啊,要注册的,楼主有别的链接么
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2010-6-10 16:37
0
[原创]WINRAR 3.93中文版压缩密码嗅探器
神似只能针对特定版本,回头弄个搜特征码的好兼容别的版本就好了
精华数
RANk
339
雪币
1510
活跃值
关注数
粉丝数
0
课程经验
0
学习收益
0
学习时长
基本信息
  能力排名: No.44
  等    级: LV13
活跃值  活跃值:活跃值
  在线值:
  浏览人数:785
  最近活跃:2021-11-3 23:13
  注册时间:2004-04-20
勋章
能力值

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册