6. MASM32的bug和脱壳

VC6中,以下文件libc.lib是静态版,带D的是Debug版,带I的是Import版,带MT的是MultiThread版,带P的是CPP版。

 

 

 

 

此函数宏的定义有些不同,MASM错把GetEnvironmentStringsA当成了函数

LPCH

WINAPI

GetEnvironmentStrings(

    VOID

    );

 

 

LPWCH

WINAPI

GetEnvironmentStringsW(

    VOID

    );

 

#ifdef UNICODE

#define GetEnvironmentStrings  GetEnvironmentStringsW

#else

#define GetEnvironmentStringsA  GetEnvironmentStrings

#endif // !UNICODE

 

修改kernel32.inc文件后还要重新生成kernel32.lib,要用到C:\Users\Hang\Downloads\RadASM\masm32\tools\inc2l\inc2l.exe,此文件也有bug,调用mllink时路径不对,也要修复。

 

 

对于压缩壳:

EP开始运行,第一个push之后,对栈下访问断点,F9运行,直到断在本模块,并看见许多pushpop等恢复现场的操作时,找到jmp XXXX的代码,一般就是跳转到OEP

 

如果想dump出无壳程序,停在OEPdump是好时机,dump之后一般还要修复导入表才能正常使用。脱壳后的文件可以静态分析,也便于打补丁。

 

1. 先点dump,保存好文件

 

 

 

 

 

  1. 再点IAT AutoSearch,观察VASize是否正确

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Get Imports

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 最后点Fix Dump,修复之前dump下来的文件

 

 

posted @ 2020-11-03 21:12  八转达人  阅读(169)  评论(0编辑  收藏  举报