zoukankan      html  css  js  c++  java
  • 手脱PECompact v2.xx

    1、使用Detect It Easy进行查壳;
    2、使用x32dbg打开该带壳程序,在选项->选项->异常中添加区间设置0~FFFFFFFF全忽略;
    3、我们F9运行到程序入口处,会看到mov eax,puah eax,push dword,我们单步跳转到push dword的位置,堆栈窗口压入了一行地址,右键,内存窗口跟随该地址;
    4、在该内存处下dword的硬件访问断点,然后F9运行,至图中位置后,向下查找(可能会由于异常或断点,一次无法跳转至此,可以F9,直到此位置);
    5、找到pop ebp,jmp eax后,向jmp eax下断点,然后F9运行(注意删除之前的硬件访问断点),此处是由于我们可以看到jmp eax时,eax的值为004012CD,而EIP的地址为00406C5A,对比两地址,该处是个大跳转,非常有可能是OEP;
    6、单步步入jmp eax中,该处就是OEP位置,在此处使用Scylla进行脱壳;
    7、再次查壳,已成功将壳脱下;
    8、总结;
    该脱壳需要注意,尽量使用x32dbg,因为OD在脱壳后修复IAT表时会出现错误,会比较麻烦,另外向堆栈的上一个地址下硬件访问断点,这种手法被称为广义ESP定律,原理是加壳的程序,必然会在解密后运行前进行堆栈平衡,我们在此处下访问断点,出栈的时候极有可能是正常程序运行前的位置;





  • 相关阅读:
    python之enumerate
    PyCharm Debug 调试
    兼容性测试方法
    mongo基本命令
    mongodb启动
    安装STF
    新家
    用数组实现的最大堆(C++)
    VS2013调用GLPK求解线性规划
    转:Java读取txt文件和写入txt文件
  • 原文地址:https://www.cnblogs.com/HOPEAMOR/p/12009416.html
Copyright © 2011-2022 走看看