首页
社区
课程
招聘
[讨论]关于bambam加壳软件的探讨
发表于: 2007-10-7 19:01 5446

[讨论]关于bambam加壳软件的探讨

2007-10-7 19:01
5446
引用论坛里的一位DogWang兄弟的帖子:我使用BedRock根据bigboote的make your own pe packer的代码学习加壳。感觉很有长进,但在给delphi6/7编译的exe加壳的时候,运行加壳后的文件,系统提示此文件不是有效的win32应用。

刚刚开始我以为是TLS的问题,后来发现不是,bambam处理TLS使用了所谓的TLS_proxy,用假的tls代替了原始的tls.

希望高人能帮我解决delphi的问题。bambam004的代码在源码区可以下载。

我也与DogWang兄弟遇到的问题一样,不知道是怎么回事,而且还有一个问题就是,我在Stub的
dll文件增加几个功能后,按照上面的手法增加了如下对Kernel32.dll函数的调用
typedef HGLOBAL (__stdcall *PFNGLOBALALLOC)(UINT, SIZE_T);
typedef HGLOBAL (__stdcall *PFNGLOBALFREE)(HGLOBAL);
typedef BOOL (__stdcall *PFNISDEBUGGERPRESENT)(void);
typedef VOID (__stdcall *PFNEXITPROCESS)(UINT);
typedef BOOL (__stdcall *PFNVIRTUALPROTECT)(LPVOID, SIZE_T, DWORD, PDWORD);
typedef UINT (__stdcall *PFNGETSYSTEMDIRECTORY)(LPTSTR,UINT);
typedef HANDLE (__stdcall *PFNFINDFIRSTFILE)(LPCTSTR,LPWIN32_FIND_DATA);
typedef BOOL (__stdcall *PFNFINDCLOSE)(HANDLE);
typedef HMODULE (__stdcall *PFNGETMODULEHANDLE)(LPCTSTR);
typedef HRSRC (__stdcall *PFNFINDRESOURCE)(HMODULE,LPCTSTR,LPCTSTR);
typedef HGLOBAL (__stdcall *PFNLOADRESOURCE)(HMODULE,HRSRC);
typedef DWORD (__stdcall *PFNSIZEOFRESOURCE)(HMODULE,HRSRC);
typedef LPVOID (__stdcall *PFNLOCKRESOURCE)(HGLOBAL);
typedef HANDLE (__stdcall *PFNCREATEFILE)(LPCTSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);

typedef HANDLE (__stdcall *PFNCREATEFILE)(LPCTSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
typedef BOOL (__stdcall *PFNWriteFile)(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED);
typedef BOOL (__stdcall *PFNCloseHandle)(HANDLE);

typedef DWORD (__stdcall *PFNSetFilePointer)(HANDLE,LONG,PLONG,DWORD);
typedef HANDLE (__stdcall *PFNCreateMutex)(LPSECURITY_ATTRIBUTES,BOOL,LPCTSTR);

typedef DWORD (__stdcall *PFNGetLastError)(VOID);

        pfnGetSystemDirectory = (PFNGETSYSTEMDIRECTORY)GetProcAddress(hMod, "GetSystemDirectoryA");

        pfnFindFirstFile = (PFNFINDFIRSTFILE)GetProcAddress(hMod, "FindFirstFileA");
        pfnFindClose = (PFNFINDCLOSE)GetProcAddress(hMod, "FindClose");
        pfnGetModuleHandle = (PFNGETMODULEHANDLE)GetProcAddress(hMod, "GetModuleHandleA");
        pfnFindResource =(PFNFINDRESOURCE)GetProcAddress(hMod, "FindResourceA");
        pfnSizeofResource =(PFNSIZEOFRESOURCE)GetProcAddress(hMod, "SizeofResource");
        pfnLoadResource =(PFNLOADRESOURCE)GetProcAddress(hMod, "LoadResourceA");
        pfnLockResource=(PFNLOCKRESOURCE)GetProcAddress(hMod, "LockResourceA");
        pfnCreateFile =(PFNCREATEFILE)GetProcAddress(hMod, szCreateFile);
    FillMemory(szCreateFile, strlen(szCreateFile), 0);

        pfnWriteFile =(PFNWriteFile)GetProcAddress(hMod, szWriteFile);
        FillMemory(szWriteFile, strlen(szWriteFile), 0);

        pfnCreateMutex = (PFNCreateMutex)GetProcAddress(hMod, "CreateMutexA");
        pfnGetLastError =(PFNGetLastError)GetProcAddress(hMod, "GetLastError");

用这几个函数实现了一些小功能后,一切运行正常,但当我多增加几条代码后,压缩后的程序总是运行出错,不知道怎么回事,有哪位对bambam004研究比较深的兄弟,希望大家一起来讨论下

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
郁闷啊,郁闷啊
2007-10-9 19:13
0
雪    币: 208
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好好研究一下你的编译器把,vc的编译器太SB了
2007-10-9 23:21
0
游客
登录 | 注册 方可回帖
返回