找回密码
 注册
搜索
热搜: 回贴

浅谈API函数调用的方法,API,逆向工程技术

2010-1-30 18:38| 发布者: admin| 查看: 318| 评论: 0|原作者: 夙瑶


浅谈API函数调用的方法,API,逆向工程技术
2008年06月24日 星期二 下午 03:49
浅谈API函数调用的方法



API函数地址的查找在很多时候都需要,比如做DIY的时候难免需要调用API函数。关于API函数的调用有不少方法,今天我大体说一些,不是具体的步骤,只是一些原理。



1、 查看软件的引入表。如果被修改的软件中已经导入了你需要用到的API函数,这最好不过,可以用PE工具察看引入表,就可以得到该函数的RVA;



2、修改引入表。

如果软件中没有该函数的信息,可以手工把该函数的信息导入到引入表中,手工导入需要理解PE导入表的相关格式,比较麻烦,但是占用资源少。

一般来说,用PE工具也可以导入动态连接库的信息,但是前提是需要把动态连接库的信息重新导入,这有很大不便。具体来说:

假如我们需要把Messageboxa函数导入到一个软件中。

因为Messageboxa函数在User32.dll,则利用PE工具导入的时候存在2种状况:





1、该软件中没有引入了User32.dll,那么可以利用Stu_pe等工具把User32.dll库的信息导入到软件中,顺便把Messageboxa函数信息导入到其中。具体方法请参考那些PE软件的说明;

2、该软件中已经引入了User32.dll,有时候利用PE工具(例如PEdit,Stu_pe等)把Messageboxa函数的信息导入到软件中时候,如果强行按照上面的方法导入User32.dll和Messageboxa,那么新导入的信息可用,但是以前的User32.dll信息无法使用。就是说新添加的Messageboxa是可以用了,但是人家以前导入的Use32.dll中的函数都没办法使用了。导致软件运行不正常;改进方法当然有了,据说用LordPE可以,呵呵。





3、利用Loadlibrary函数和GetProcessAddress函数相结合,然后获取需要的函数的地址,这种方法看起来比较麻烦,事实上也比较麻烦:) ,但是我感觉比较安全,不会出什么乱子,我一般采用这种方法;



4、搜索软件的导入表。动态搜索软件的导入表,这种方法是动态修改软件的时候需要用到的,一般来说用于加壳软件或者病毒。具体方法我就不介绍了。有兴趣的可以去查查相关资料,我这也有一些。



5、直接利用Kernel32.dll中的函数,这种方法很少见到DIY方面的朋友采用。由于Kernel32.dll是系统核心,随时都在运行,可以利用他里面的函数地址。比如说需要用到CreateFile函数,可以查出来Kernel32.dll中导出的CreateFile的地址,然后call这个地址就可以了。但是这种方法存在明显缺陷:由于操作系统的不一样(比如XP中就不是Kernel32.dll库),会导致函数地址的不同。这一点需要注意。这种方法是我看Vbin写的病毒的时候发现的,感觉不错。不过我还没用过,要有不便我以后给大家再说。



以上介绍了一些方法,具体的方法可以查相关资料,或者和我讨论(www.fcgchina.com)。这些方法各有好处,统统掌握也不是坏处,呵呵。



如果你还有什么方法,请一定告诉我。先谢过了!我发现这个格式编辑实在太麻烦了,半天也没处理好,大家将就着看吧。


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:39 , Processed in 0.132077 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部