zoukankan      html  css  js  c++  java
  • 第7章:调试StackFrame

    在最开始调试的时候毫无头绪,不知道从哪里找到main函数(忽略401000).

    看了书上的地址之后,才能找到,现在将进入Main函数前的一些特征提取出来,以便将来调试C++程序时使用.

    首先程序断在系统代码领空-- ntdll 处:

     继续在系统领空执行:

     在call ntdll.778C587F中(不太理解为何要通信):

     下一个call esi 中,调用 BaseThreadIintThunk,启用一个Win32 API

     然后下面的调用都是基本执行一些进程初始化的操作:

     

     跟进到执行这个函数,此函数在进程创建之前必会调用,会修改某处的代码,另一种用途是用作恶意代码执行,即对此函数下HOOK,跳转到shellcode:

     函数内部可以看到:

     执行完这个函数就可以看到 Ntcontinue 函数了,使程序执行到用户代码领空.

     

     执行完上述函数之后,跳转到401155:

     进入第一个函数:

     

     函数返回程序的绝对地址:

     call 4030DC中, GetEnvironmentStrings 函数,得到操作系统、处理器、屏幕显示等与系统相关的信息

     然后跳转到 进程用户代码中的403131,之后释放相关环境信息:

    参数传递时,用到了系统变量(不知为何),传入了参数 1,以及程序实际存储的地址的指针的引用.

    里面即是main函数

    学逆向,对操作系统的内核知识还是得要有了解掌握

  • 相关阅读:
    wcdb中使用rowid做查询条件
    [转载]Linux下断开SSH连接后,让程序继续在后台执行
    Mac OS X wants to use the “system” keychain 的解决方案
    wcdb的主键和唯一性
    type(),dir(),getattr(),hasattr(), isinstance()用法
    获取昨天日期
    二分法
    三次握手和四次挥手
    py2和py3之间的不同
    flask 接收参数小坑
  • 原文地址:https://www.cnblogs.com/Rev-omi/p/13153290.html
Copyright © 2011-2022 走看看