zoukankan      html  css  js  c++  java
  • 分析ReadProcessMemory如何进入R0【上】

    分析ReadProcessMemory如何进入R0【上】

    (系统环境:在Windows7 32位操作系统 / 调试器:olldbg 编译器:VS2008)

    1.调试代码

    #include "stdafx.h"
    #include <windows.h>
    
    
    int age=100;
    int outBuff=NULL;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	printf("111111111111111111111
    ");
    	ReadProcessMemory(INVALID_HANDLE_VALUE,
    		&age,&outBuff,sizeof(outBuff),NULL);	
    	printf("%d
    ",outBuff);
    	system("pause");
    	return 0;
    }
    

    2.分析ReadProcessMemory如何从R3进入R0

    第一步:

    003A13F7 6A 00 push 0x0
    003A13F9 6A 04 push 0x4
    003A13FB 68 48713A00 push offset ReadProc.outBuffe_startup_statenement
    003A1400 68 00703A00 push offset ReadProc.age ; d
    003A1405 6A FF push -0x1
    003A1407 FF15 A8813A00 call dword ptr ds:[<&KERNEL32.ReadProcessMemory>] ;

    kernel32.ReadProcessMemory

    第二步:

    774FC1CE > 8BFF mov edi,edi
    774FC1D0 55 push ebp
    774FC1D1 8BEC mov ebp,esp
    774FC1D3 5D pop ebp ;

    kernel32.77513C45
    774FC1D4 ^ E9 F45EFCFF jmp <jmp.&API-MS-Win-Core-Memory-L1-1-0.ReadProcessMemory>

    第三步:

    774C20CD - FF25 0C194C77 jmp dword ptr ds:[<&API-MS-Win-Core-Memory-L1-1-0.ReadProces>;

    KernelBa.ReadProcessMemory

    第四步

    75A99A0A > 8BFF mov edi,edi
    75A99A0C 55 push ebp
    75A99A0D 8BEC mov ebp,esp
    75A99A0F 8D45 14 lea eax,dword ptr ss:[ebp+0x14]
    75A99A12 50 push eax ;

    kernel32.BaseThreadInitThunk
    75A99A13 FF75 14 push dword ptr ss:[ebp+0x14]
    75A99A16 FF75 10 push dword ptr ss:[ebp+0x10]
    75A99A19 FF75 0C push dword ptr ss:[ebp+0xC] ;

    apisetsc.779E0319
    75A99A1C FF75 08 push dword ptr ss:[ebp+0x8]
    75A99A1F FF15 C411A975 call dword ptr ds:[<&ntdll.NtReadVirtualMemory>] ;

    ntdll.ZwReadVirtualMemory

    第五步

    777E62F8 >/$ B8 15010000 mov eax,0x115
    777E62FD |. BA 0003FE7F mov edx,0x7FFE0300
    777E6302 |. FF12 call dword ptr ds:[edx]

    第六步

    777E70B0 >/$ 8BD4 mov edx,esp
    777E70B2 |. 0F34 sysenter
    777E70B4 >$ C3 retn

    总结:R3只是做的准备工作,核心的实现在R0

    流程:

    R3汇编简单分析:

  • 相关阅读:
    Flex框架Cairngorm2 SequenceCommand用法封装
    SourceMate插件
    Cairngorm2 中SequenceCommand用法
    SourceMate出新版本了
    Flash Builder 4 安装ANT插件
    Text Layout Framework
    浅谈继承和组合
    Flex Ant脚本模板
    JS上传图片转化成Base64编码demo
    js动态改变iframe的高度
  • 原文地址:https://www.cnblogs.com/Besttwuya/p/14037039.html
Copyright © 2011-2022 走看看