admin 管理员组文章数量: 1087678
通过注入DLL来控制小飞信LibFx.exe发短信
说明:小飞信LibFX最新版2.0beta6,采用静态编译libfection库,因此没有独立的dll可以调用。但是LibFx.exe主程序中还是有飞信相关函数的输出存在。因此,可以通过注入DLL的方式去调用这些函数,为第三方程序提供短信调用。
被注入的DLL代码示例://Visual Studio 2010下编译,编译选项:把unicode改为多字节字符集,以免字符处理麻烦。
#include "windows.h"
#include <stdio.h>
#include <process.h>#define MYTESTDLL_API extern "C" __declspec(dllexport)//以自己给自己发短信为例,用到fx_send_sms_to_self函数
typedef void(* EventListener)(int message, WPARAM wParam, LPARAM lParam, void *args);
typedef int (*pfx_send_sms_to_self)( const char * message, EventListener func,void * args);//空回调,什么都不做。void MyEventListener(int message, WPARAM wParam, LPARAM lParam, void *args){}//被注入的DLL,运行这个线程负责与主程序通信。
void StubThread(LPVOID);//一些进程通信用到的数据,全局变量。
#pragma data_seg("shared")int len=0;
char buf[255]="test";
pfx_send_sms_to_self fx_send_sms_to_self=0;
#pragma data_seg()#pragma comment(linker, "/SECTION:shared,RWS")//DLL被注入后,直接调用start函数,获取小飞信相关函数,设置事件,等待主程序通知。
MYTESTDLL_API void start(void)
{fx_send_sms_to_self=(pfx_send_sms_to_self)GetProcAddress(GetModuleHandle(NULL), "fx_send_sms_to_self");if(fx_send_sms_to_self !=NULL){HANDLE ev=CreateEvent(NULL,TRUE,TRUE, "fx" ) ;ResetEvent(ev);_beginthread(StubThread,NULL,NULL) ;}
}void StubThread (LPVOID )
{HANDLE ev=OpenEvent(EVENT_ALL_ACCESS,false,"fx");while ( true ){WaitForSingleObject (ev, INFINITE ) ;fx_send_sms_to_self(buf,MyEventListener,NULL); //事件被激活后,就发送一次短信,发完了,取消激活。ResetEvent(ev);}
}MYTESTDLL_API void SetValue(int n,char *str)
{len = n;for(int i=0;i<n;i++){buf[i]=str[i];}
}MYTESTDLL_API void init(void)
{for(int i=0;i<255;i++){buf[i]=0x0;}len=0;
}
与被注入的DLL进行通信的主程序代码示例:
int _tmain(int argc, _TCHAR* argv[])
{STARTUPINFO si = {0};PROCESS_INFORMATION pi = {0};BOOL result = FALSE;char * exeString = "C:\\Users\\dongyuejiang\\Desktop\\win_LibFetion_V2.0_beta6\\LibFx.exe";char * workingDir ="C:\\Users\\dongyuejiang\\Desktop\\win_LibFetion_V2.0_beta6";char* dllPath="D:\\Projects\\MyInJectDll\\Debug\\TestDLL.dll";si.cb = sizeof(STARTUPINFO);result = CreateProcess(NULL, exeString, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, workingDir, &si, &pi);if(!result){MessageBox(0, "Process could not be loaded!", "Error", MB_ICONERROR);return -1;}ResumeThread(pi.hThread);Sleep(30000); //留点时间让小飞信自己登录服务器,完成登录初始化。//负责DLL注入,参考.aspx;Inject(pi.hProcess, dllPath, "start");///typedef void (*pSetValue)(int n,char *str);typedef void (*pinit)();typedef void (*pSendSMS)();HINSTANCE hDll;pSetValue SetValue;pinit init;hDll=LoadLibrary("TestDll.dll");if(hDll != NULL){SetValue=(pSetValue)GetProcAddress(hDll,"SetValue"); init=(pinit)GetProcAddress(hDll,"init");if(SetValue!=NULL){init();char s[]="11111111111";SetValue(strlen(s),s);SetEvent(OpenEvent(EVENT_ALL_ACCESS,false,"fx"));//激活事件,发一次Sleep(5000);SetEvent(OpenEvent(EVENT_ALL_ACCESS,false,"fx"));}FreeLibrary(hDll);}return 0;
}
本文标签: 通过注入DLL来控制小飞信LibFxexe发短信
版权声明:本文标题:通过注入DLL来控制小飞信LibFx.exe发短信 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700276120a375870.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论