读取sysTreeview32和SysListView32
#include <stdio.h>
#include <windows.h>
#include <commctrl.h> int main(void)
{ /* Run through the windows until we find our listview. */
HWND hwnd = NULL;
int count, i;
char item[512] = {0}, subitem[512] = {0}; LVITEM lvi, *_lvi;
char *_item, *_subitem;
DWORD pid;
HANDLE process; hwnd = FindWindowEx(hwnd, NULL, TEXT("CabinetWClass"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("SHELLDLL_DefView"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("DUIViewWndClassName"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("DirectUIHWND"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("CtrlNotifySink"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("SysListView32"), NULL); count=(int)SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0); GetWindowThreadProcessId(hwnd, &pid);
process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|
PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid); _lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM),
MEM_COMMIT, PAGE_READWRITE);
_item=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT,
PAGE_READWRITE);
_subitem=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT,
PAGE_READWRITE); lvi.cchTextMax=512; for(i=0; i<count; i++) {
lvi.iSubItem=0;
lvi.pszText=_item;
WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);
SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi); lvi.iSubItem=1;
lvi.pszText=_subitem;
WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);
SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi); ReadProcessMemory(process, _item, item, 512, NULL);
ReadProcessMemory(process, _subitem, subitem, 512, NULL); printf("%s - %s\n", item, subitem);
} VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
VirtualFreeEx(process, _item, 0, MEM_RELEASE);
VirtualFreeEx(process, _subitem, 0, MEM_RELEASE); return 0;
} //http://www.codeproject.com/Articles/5570/Stealing-Program-s-Memory
#include <iostream>
#include <afx.h>
#include <windows.h>
#include <commctrl.h>
using namespace std; int main()
{
HWND hwnd = NULL;
DWORD PID;
HANDLE process;
PVOID buffer;
const int bufferLength = 4000;
LPTVITEM item = (LPTVITEM)new BYTE[bufferLength];
CString text; hwnd = FindWindowEx(hwnd, NULL, TEXT("CabinetWClass"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("BaseBar"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("ReBarWindow32"), NULL);
hwnd = FindWindowEx(hwnd, NULL, TEXT("SysTreeView32"), NULL); if (hwnd == NULL)
{
return 0;
} GetWindowThreadProcessId(hwnd, &PID);
process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
buffer = VirtualAllocEx(process,NULL,bufferLength,MEM_COMMIT,PAGE_READWRITE); item->mask = TVIF_TEXT;
item->cchTextMax = 512;
item->pszText = LPTSTR((PBYTE)buffer+sizeof(TVITEM));
item->hItem = (HTREEITEM)SendMessage(hwnd,TVM_GETNEXTITEM,TVGN_ROOT,0); while(item->hItem)
{
SendMessage(hwnd,TVM_SELECTITEM,TVGN_CARET,(long)item->hItem);
WriteProcessMemory(process,buffer,item,sizeof(TVITEM),NULL);
SendMessage(hwnd,TVM_GETITEM,0,(LPARAM)buffer);
ReadProcessMemory(process,buffer,item,bufferLength,NULL);
text = (LPTSTR)((PBYTE)item+sizeof(TVITEM));
if( -1 != text.Find("Download"))
{
SendMessage(hwnd,TVM_EXPAND,TVE_EXPAND,(long)item->hItem);
SendMessage(hwnd, TVM_SELECTITEM,TVGN_CARET, (long)item->hItem); cout << (LPSTR)(LPCTSTR)text << endl; break;
}
item->hItem = (HTREEITEM)SendMessage(hwnd,TVM_GETNEXTITEM,TVGN_NEXTVISIBLE,(long)item->hItem);
} VirtualFreeEx(process, item, 0, MEM_RELEASE);
CloseHandle(process);
return 0;
} //http://bbs.csdn.net/topics/391818883
http://bbs.csdn.net/topics/391818883
读取sysTreeview32和SysListView32的更多相关文章
- WIN 下的超动态菜单(三)代码
WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/ 超动态 ...
- 读取其他软件listview控件的内容
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- nodejs进阶(4)—读取图片到页面
我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...
- 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
Web.config的读取 对于Web.config的读取大家都很属性了.平时我们用得比较多的就是appSettings节点下配置.如: 我们对应的代码是: = ConfigurationManage ...
- Asp.Net MVC中使用StreamReader读取“Post body”之应用场景。
场景:有三个市场(Global.China.USA),对前台传过来的数据有些验证需要细化到每个市场去完成. 所以就出现了基类(Global)和派生类(China.USA) 定义基类(Global)Pe ...
- HTML中上传与读取图片或文件(input file)----在路上(25)
input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...
- Win.ini和注册表的读取写入
最近在做打包的工作,应用程序的配置信息可以放在注册表文件中,但是在以前的16位操作系统下,配置信息放在Win.ini文件中.下面介绍一下Win.ini文件的读写方法和注册表的编程. 先介绍下Win.i ...
- spring无法读取properties文件数据
只讲述异常点,关于怎么配置文件,这里不做说明. 1. controller中无法读取config.properties文件 controller中注入的@Value配置是从servlet-cont ...
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
#coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...
随机推荐
- C / C++ 保留小数函数(setprecision(n)的一些用法总结)
从C语言开始正式学习C++,但是一上来输出位数就懵了,查资料才知道C++需要使用 “ setprecision ”函数.自己总结一下. 首先说C++代码 #include <iomanip&g ...
- 洛谷P1638 逛画展 题解 尺取法/双指针/队列
题目链接:https://www.luogu.com.cn/problem/P1638 题目大意: 给你一个长度为 \(n (\le 10^6)\) 的数组,数组中每个元素的范围在 \(1\) 至 \ ...
- 1053 住房空置率 (20 分)C语言
在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的日子用电量低于某给定的阈值 e,则该住房为"可能空置&quo ...
- Springboot Jackson配置根本方案, 日期格式化, 时区设置生效
当项目集成配置的功能越来越多, 说不准哪个配置就影响到了什么. 比如你启用了EnableMvC, 默认配置文件配置的一些文件就失效了. 虽然约定大于配置,让springboot可以极简化构建, 但不熟 ...
- CF854C Planning优先队列|set
C. Planning 传送门 Helen works in Metropolis airport. She is responsible for creating a departure sched ...
- Nginx作为web静态资源服务器——防盗链
基于http_refer防盗链配置模块 Syntax:valid_referers none | blocked | server_names | string ...; Default:—— C ...
- 关于爬虫的日常复习(8)—— 实战:request+正则爬取猫眼榜单top100
- Flask登录认证
login函数 @app.route('/login/', methods=['GET', 'POST']) def login(): if request.method == 'GET': retu ...
- 外网主机远程ssh局域网Linux
最近,公司有台配置极高的主机盒子(i7,32G,512G),组长让我装上kali,平时渗透测试时可以用,其余时间归我了,这么高配置的机器,怎么舍得让它吃灰呢 .所以我就去研究了一下,如何远程访问局域网 ...
- Thematic002.字符串专题
目录 Trie字典树 KMP AC自动机 Manacher 回文自动机 后缀数组 后缀自动机 Trie字典树 概念 我们先来看看什么是Trie字典树 可以发现,这棵树的每一条边都有一个字符 有一些点是 ...