首页
社区
课程
招聘
过DXF的NtOpenProcess源码修改
发表于: 2011-1-15 17:13 5662

过DXF的NtOpenProcess源码修改

2011-1-15 17:13
5662
sca vcasca as

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看了200多人竟然没人解答
2011-1-16 08:02
0
雪    币: 439
活跃值: (1279)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
NTSTATUS NtMyOpenProcess( )

注意这个函数的调用约定
应该使用__declspec(naked)
这样它生成的函数没有函数框架,不操作堆栈
如果要使用NTSTATUS
就和普通函数一样了
在函数头部会有一些push操作,那么在返回之前要有相应次数的pop操作
以保证堆栈平衡
而且会改变相应寄存器的值。也要设法保存以及恢复
2011-1-16 11:04
0
雪    币: 1115
活跃值: (122)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
调用你的NtMyOpenProcess时要保存环境,比如这样写:

这句改成   *(ULONG *)(JmpAddress+1)=(ULONG)xxxNtMyOpenProcess-((ULONG)p_WriteAddress+5);

xxxNtMyOpenProcess函数可以这样写:
(NtMyOpenProcess声明为__stdcall)

void _declspec(naked) xxxNtMyOpenProcess()
{
  _asm
{
  pushad
  pushfd

  call NtMyOpenProcess

  popfd
  popad
  ret
}
}
2011-1-16 11:20
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这后面加个ret是不是错了
你让他返回 不就栈不平衡了
2011-1-17 02:25
0
游客
登录 | 注册 方可回帖
返回
//