vs2016独立汇编修改.code段属性

squijy 2016-12-26 06:05:44
我在学习写一个加壳程序,目前遇到一个问题。
我按照《加密解密》中的思路,加壳程序,大致分为3步:
1.源程序压缩
2.新增Shell段
3.修改PE文件OEP等信息
Shell用汇编编写,环境vs2016下masm32独立编译,先解压源程序,然后jmp OEP。
遇到的问题是,Shell我定义了一个全局变量用来保存源程序OEP,保存在.code段中,我想在添加到Shell段时一起添加到目标PE文件中
Shell.asm如下

PUBLIC procOEP
assume fs:nothing
.code
;**********************************************************
ShellStart0 LABEL DWORD
pushad ; 外壳入口点
call next0
;**********************************************************
;**********************************************************
next0:
jmp procOEP
procOEP DD 0
ShellEnd0 LABEL DWORD

现在我想在加壳程序中修改这个值,而修改就会出现读取错误,
加壳程序大致如下

extern "C" DWORD procOEP;
procOEP = m_pNtHeaders->OptionalHeader.AddressOfEntryPoint;

我认为是.code段只能执行不能写的原因。现在请教这个问题怎么解决比较好
...全文
146 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
BOOL WINAPI WriteProcessMemory(
  __in   HANDLE hProcess,
  __in   LPVOID lpBaseAddress,
  __in   LPCVOID lpBuffer,
  __in   SIZE_T nSize,
  __out  SIZE_T* lpNumberOfBytesWritten
);

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧