首页
社区
课程
招聘
[旧帖] [求助]为什么拷贝的数据变动了? 0.00雪花
发表于: 2012-3-21 01:57 1535

[旧帖] [求助]为什么拷贝的数据变动了? 0.00雪花

2012-3-21 01:57
1535
BYTE OldCode[5];

__declspec(naked) VOID MyGet()
{
        __asm
        {
                mov data1,ecx //
                mov data2,esi //
                pushad
        }
       
        RtlCopyMemory(jmpaddr,OldCode,5); //本意是要恢复Hook处的代码,奇怪的是OldCode拷贝了Hook之前的代码,为什么这里OldCode变成了Hook之后的代码?恢复不了...
       
        VirtualProtect((LPVOID)jmpaddr,5,OldProtec,NULL); //恢复页面属性
       
        __asm
        {
                popad
                jmp jmpaddr
        }
}

////////////////////////////////

BOOL APIENTRY DllMain( HANDLE hModule,
                                       DWORD  ul_reason_for_call,
                                       LPVOID lpReserved )
{
        jmpaddr = (VOID *)0x49362e;
       
        RtlCopyMemory(OldCode,jmpaddr,5); //拷贝Hook之前的代码
       
        VirtualProtect((LPVOID)jmpaddr,5,PAGE_EXECUTE_READWRITE,&OldProtec);
       
        *(PBYTE)jmpaddr = 0xe9;  //写入JMP
        *(PULONG)((PBYTE)jmpaddr + 1) = (ULONG)MyGet - (ULONG)jmpaddr - 5;
       
        return TRUE;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 297
活跃值: (235)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
2
感觉应该没问题阿,不会是oldcode数组放在dll的共享节不小心给改变了吧?
2012-3-21 09:22
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不会的,因为oldcode数组只被使用了2次
第一次被初始化了,中间再没有使用
但是第二次使用时,数据却变动了...
很难理解...
2012-3-21 13:06
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
新手来学习一下
2012-3-21 13:34
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
just debug it
2012-3-21 15:06
0
游客
登录 | 注册 方可回帖
返回
//