使用说明
程序被设计可以远程调试的模式,所有分服务端和控制端
DynS是被调试端服务程序,在被调试机器运行即可
DynC是控制程序,简单的使用步骤如下:
1: lk 目标IP ,打入LK 默认连接本机
2: ls 列出所有正在运行的程序
3: at 目标PID 指定需要调试的进程
到这个步骤就可以在源代码编辑区针对性的修改代码进行调试了,在代码中可以引入输入函数,将有用的信息反馈给控制端
4: run 在目标程序中执行写好的C代码
5: 继续修改代码,再次run 或者stop 停止运行
下面是一段DEMO代码,可以载入IE浏览器进行测试
//以下是内嵌的动态库加载的函数申明
int GetModuleHandle(char *lpModuleName);
int LoadLibrary(char *lpFileName);
void *GetProcAddress(int hModule,char *lpProcName);
int FreeLibrary(int hModule);
//以下是内嵌的代码替换的函数申明
int HookAPI(char *pDllName,char *pFuncName,void *usefunc);
int HookFunc(void *sysfunc,void *usefunc);
void EnableHook(int handle);
void DisableHook(int handle);
void UnHook(int handle);
typedef int (WINAPI *PRECV)(int,char*,int,int);
typedef int (WINAPI *PSEND)(int,char*,int,int);
PSEND psend,precv;
int hsend,hrecv;
int WINAPI my_send(int s, char *buf, int len, int flags)
{
int r;
DisableHook(hsend);
r = psend(s,buf,len,flags);
EnableHook(hsend);
if ( r > 0 ){
print("\n-------------------- SEND %d bytes --------------------\n",r);
//print("%s\n",buf);
hex(buf,r);
}
return r;
}
int WINAPI my_recv(int s, char *buf, int len, int flags)
{
int r;
DisableHook(hrecv);
r = precv(s,buf,len,flags);
EnableHook(hrecv);
if ( r > 0 ){
print("\n-------------------- RECV %d bytes --------------------\n",r);
//print("%s\n",buf);
hex(buf,r);
}
return r;
}