首页
社区
课程
招聘
[原创]原创的壳
发表于: 2013-10-21 16:45 8947

[原创]原创的壳

2013-10-21 16:45
8947

这是我以前写的一个壳,拿出来跟大家学习一下,是个纯粹的反调试和反修改的壳,没有加入导入表,导出表的保护,代码保护等功能,仅供学习。

望指教。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 5
支持
分享
最新回复 (6)
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
支持一个,以前一直想写来着
2013-10-21 17:18
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
汇编写的来着
我觉得这个exe很适合用来做逆向练习
2013-10-21 17:27
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
4
差不多是这样写的吧?
#include <imagehlp.h>
void PreLoader()
{
        if (!IsDebuggerPresent())
        {
                HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
                PROCESSENTRY32 pe;
                pe.dwSize=sizeof(PROCESSENTRY32);
                DWORD dwParentPID;
                if(Process32First(hSnapshot,&pe))
                {
                        do
                        {
                                if (GetCurrentProcessId()==pe.th32ProcessID)
                                {
                                        dwParentPID=pe.th32ParentProcessID;
                                        break;
                                }
                        } while (Process32Next(hSnapshot,&pe));
                }
                if(Process32First(hSnapshot,&pe))
                {
                        do
                        {
                                if (dwParentPID==pe.th32ProcessID)
                                {

                                        if (lstrcmp(pe.szExeFile,"explorer.exe"))
                                        {
                                                MessageBox(NULL,"Debugger Detected!","GameOver",MB_OK);
                                                TerminateProcess(GetCurrentProcess(),0);
                                        }
                                        else break;
                                }
                        } while (Process32Next(hSnapshot,&pe));
                }
                TCHAR strExeFileame[MAX_PATH]={0};
                DWORD dwHeadersum,dwChecksum;
                MapFileAndCheckSum(GetModuleFileName(GetModuleHandle(NULL),strExeFileame,MAX_PATH),&dwHeadersum,&dwChecksum);
                if (dwChecksum==(dwHeadersum+0x0c)>>1)
                {
                        //Jump to OEP
                }
        }
}
2013-10-21 22:19
0
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
差不多。
source.rar
还有个加了一点SEH。
上传的附件:
2013-10-23 15:34
0
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
其实还是有点不同的,你这种必须加载imagehlp.dll,我的在堆中kernel32.dll的模块地址,在找函数地址,再加载函数。
2013-10-23 15:37
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这段代码是说如果父进程是explorer.exe就结束掉该进程吗?
2013-10-23 15:51
0
游客
登录 | 注册 方可回帖
返回
//