第29章:API钩取-逆向分析之花

钩取的流程:

1.使用反汇编/调试器把握程序的结构和工作原理.

2.开发需要的"钩子"代码,用于修改Bug,修改程序功能.

3.灵活操作可执行文件与进程内存,设置"钩子"代码.

使用场景: 程序无源代码或难以修改.

API: Application Programming Interface,应用程序编程接口.用户无法直接使用系统资源,必须通过API向内核申请资源.因而要加载很多系统进程

 

只有某些特定的系统进程(例如,smss.exe)不会加载 kernel32.dll库, kernel32.dll 会加载ntdll32.dll .而在GUI应用程序中 uer32.dll 和 gdi32.dll 是必需的库.

通过API钩取可以实现对某些API调用过程的拦截,并获得相应的控制权限.

修改IAT处的函数地址:  实现简单,但无法钩取动态加载并使用DLL时的API.

代码修改:  ①使用JMP指令修改其实代码②覆写函数局部③修改局部的局部.

修改EAT: 将DLL中的EAT地址改为钩取函数地址.但是不容易做到.

 

调试也包含自己编写的程序,通过调试API附加到目标进程.

注入包含DLL注入和代码注入.

 

posted @ 2020-07-29 15:05  Rev_omi  阅读(344)  评论(0编辑  收藏  举报