Main函数查找之Borland小记

说明

今天看到IDA权威指南上有关Borland程序定位main函数的描述,特此记录方便日后查看。

使用OD查看Main函数查找之Borland小记

1:在程序的入口点处有两处对于函数GetModuleHandle函数的调用,并且在push 0 之前都有另外四个字节的压栈操作。第二次函数调用压入了一个结构体指针用来进入main函数之前进行初始化操作,此结构体中的某一个字段就是main函数指针。
Main函数查找之Borland小记
Main函数查找之Borland小记
箭头所指就是main函数的位置了

2:断点位置就是main函数的调用了(_startup函数内部调用),ESI就是刚才结构体的起始位置,据IDA的描述程序在调用main函数之前会调用GetEnvironmentStrings和GetCommandLine可以作为参考
Main函数查找之Borland小记

使用IDA查看

Main函数查找之Borland小记
此处IDA已经帮我们标注好了
Main函数查找之Borland小记