给inc2l打个提醒补丁:)

用过RadASM的都知道,有时候会碰到一个较为莫名的问题,在include文件下利用inc2l生成一个对应的lib文件不成功且没有任何提示,性子急的人就容易以为程序本身出了问题,其实这个是程序在默认情况下的处理不给力的原因。这里可以分析一下inc2l,获取一些有用的信息:

给inc2l打个提醒补丁:)_第1张图片

图2.1分析前问题重现

 

脱壳后利用OD载入进行调试后,通过分析可知该程序必然要进行文件的创建操作(因为lib文件的生成需要中间文件的支持【当然不排除变态做法,但考虑此工具的性质而言可能性微乎其微】),因此利用创建文件的API,CreateFileA,通过回溯查找的方法可以定位到关键处(过程省略)。利用API函数,定位到关键要点处如下:

给inc2l打个提醒补丁:)_第2张图片

图2.2 获取环境变量处

给inc2l打个提醒补丁:)_第3张图片

    图2.3 首先创建出两个空文件kernel32.asm及kernel32.def,然后在接下来的处理流程中进行写文件操作,为将数据写入作为生成lib文件的准备。

 

给inc2l打个提醒补丁:)_第4张图片

图2.4 当没有环境变量的时候,跳转到默认设置处

而默认的地方其路径为:\masm32\bin\........,路径为相对路径且缺少盘符,由于该工具依赖于link的具体路径,且与RadASM相关即RadASM的安装目录相关,因此作为修正来说,最好打一个提醒补丁为较好的解决方案。当然如果不嫌麻烦可以在用户没有设置好环境变量的情况下,自己Patch出一个弹出输入框让用户自己指定出link所在的位置,同时设置环境变量mdir。 

给inc2l打个提醒补丁:)_第5张图片

程序最后会将生成的中间文件删除

 给inc2l打个提醒补丁:)_第6张图片

图 2.5 程序删除中间文件

最后我们回头inc2l.exe程序本身的帮助,发现在SETTINGS处人家已经说得很清楚了


图 2.6 inc2l的帮助说明

通过图2.6我们可以很清楚地知道原因所在,看来仔细阅读程序帮助也是很有必要的!!!

你可能感兴趣的:(include,api,工具,patch,逆向C++,Windows平台相关)