去除任务栏的图标

这次我要对付的软件是一个比较好用的代理软件(我不知道这样文章要不要隐藏文件名称),算法大家已经分析很多次了,我就不再重复了. 我这里来讨论一个实际应用的问题:如果你想用别人的机器上网而又不想让他轻易的发现(好像这样的想法大家都有吧?).而这个软件在启动之后 会在任务栏加载一个图标,这样就比较矛盾了啊!所以我才要解决他啊! 首先我们先来点思路: 要向系统托盘中加入和删除图标必须要用到SHELL32.Shell_NotifyIconA这个函数,也就是说当软件启动的时候一定是调用这个函数将自己的图 标加入到系统托盘中;在关闭软件的时候他也是调用这个函数将图标删除的. 我们来查一下WINAPI函数表来确定一下这个函数的使用方法和格式. Const NIM_ADD = &H0//这个就是向托盘加入图标的参数 Const NIM_MODIFY = &H1 Const NIM_DELETE = &H2//这个就是从托盘中删除图标的参数 Const NIF_MESSAGE = &H1 Const NIF_ICON = &H2 Const NIF_TIP = &H4 Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long 上面2个函数的参数一定要记下来下面有用啊! 我们用WINASM32来反汇编软件,在函数中查找SHELL32.Shell_NotifyIconA这个函数看看系统中是怎样调用他的,双击几次我们发现软件一共有3 处调用这个函数. 我们先来分析一下这个软件调用的这3处的作用:首先,软件启动会向系统的任务栏中添加一个图标;然后,要完成图标的动画作用(写过程序的人 应该知道,做动画比较简单的方法就是来回切换图标就可以完成了啊);最后,在退出软件的时候要删除任务栏的图标.大概就是这3处. 这只是初步分析了下面我们进行动态跟踪: 为了分析清楚软件是怎样调用的就必须使用TRW2000或SICE动态跟踪了,我们下BPX Shell_NotifyIconA 断点,拦断后用F12跳出看看软件是如果 调用,和使用参数的! 首先来到下面: 这里是软件启动时调用的地方 * Possible Reference to String Resource ID=00114: "CCProxy" | :00408770 6A72 push 00000072 :00408772 51 push ecx :00408773 C68424F424000005 mov byte ptr [esp+000024F4], 05 :0040877B E8C0890100 call 00421140 :00408780 83C408 add esp, 00000008 :00408783 50 push eax :00408784 8D4C2414 lea ecx, dword ptr [esp+14] :00408788 C68424F024000006 mov byte ptr [esp+000024F0], 06 :00408790 E818910300 call 004418AD :00408795 8D4C2414 lea ecx, dword ptr [esp+14] :00408799 C68424EC24000005 mov byte ptr [esp+000024EC], 05 :004087A1 E8CE8F0300 call 00441774 :004087A6 8B7C2410 mov edi, dword ptr [esp+10] :004087AA 83C9FF or ecx, FFFFFFFF :004087AD 33C0 xor eax, eax :004087AF 8D95F8090000 lea edx, dword ptr [ebp+000009F8] :004087B5 F2 repnz :004087B6 AE scasb :004087B7 F7D1 not ecx :004087B9 2BF9 sub edi, ecx :004087BB 53 push ebx :004087BC 8BC1 mov eax, ecx :004087BE 8BF7 mov esi, edi :004087C0 8BFA mov edi, edx :004087C2 6A00 push 00000000//看到了吗这里是0 :004087C4 C1E902 shr ecx, 02 //这里改没有作用因为即使改了在下面 :004087C7 F3 repz //系统切换图标时又会产生所以要改下面的 :004087C8 A5 movsd :004087C9 8BC8 mov ecx, eax :004087CB 83E103 and ecx, 00000003 :004087CE F3 repz :004087CF A4 movsb * Reference To: SHELL32.Shell_NotifyIconA, Ord:0079h//调用函数 | :004087D0 FF1570E34400 Call dword ptr [0044E370]//调用过程成功返回1,失败返回0 :004087D6 8D4C2410 lea ecx, dword ptr [esp+10] :004087DA C68424EC24000002 mov byte ptr [esp+000024EC], 02 :004087E2 E88D8F0300 call 00441774 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00408717(C) | :004087E7 55 push ebp :004087E8 E803920100 call 004219F0 :004087ED 83C404 add esp, 00000004 :004087F0 8D4C241C lea ecx, dword ptr [esp+1C] :004087F4 51 push ecx :004087F5 E878390300 call 0043C172 :004087FA 8B10 mov edx, dword ptr [eax] :004087FC 8D44241C lea eax, dword ptr [esp+1C] * Possible StringData Ref from Data Obj ->"%H:%M:%S" | :00408800 68BCD64500 push 0045D6BC :00408805 50 push eax :00408806 8D4C242C lea ecx, dword ptr [esp+2C] :0040880A 8954242C mov dword ptr [esp+2C], edx :0040880E E872390300 call 0043C185 :00408813 50 push eax :00408814 8D4C2424 lea ecx, dword ptr [esp+24] * Possible StringData Ref from Data Obj ->" " | :00408818 6828D14500 push 0045D128 :0040881D 51 push ecx :0040881E C68424F824000007 mov byte ptr [esp+000024F8], 07 :00408826 E8EC910300 call 00441A17 * Possible StringData Ref from Data Obj ->" " | :0040882B 6828D14500 push 0045D128 :00408830 8D542418 lea edx, dword ptr [esp+18] :00408834 50 push eax :00408835 52 push edx :00408836 C68424F824000008 mov byte ptr [esp+000024F8], 08 :0040883E E860910300 call 004419A3 :00408843 8B00 mov eax, dword ptr [eax] :00408845 8BCD mov ecx, ebp :00408847 50 push eax -------------------------------------------------------------------------- 这里是形成动画时的调用: :00409669 8D542414 lea edx, dword ptr [esp+14] * Possible Reference to String Resource ID=00114: "CCProxy" | :0040966D 6A72 push 00000072 :0040966F 52 push edx :00409670 C784243014000000000000 mov dword ptr [esp+00001430], 00000000 :0040967B E8C07A0100 call 00421140 :00409680 83C408 add esp, 00000008 :00409683 50 push eax :00409684 8D4C2414 lea ecx, dword ptr [esp+14] :00409688 C684242C14000001 mov byte ptr [esp+0000142C], 01 :00409690 E818820300 call 004418AD :00409695 8D4C2414 lea ecx, dword ptr [esp+14] :00409699 C684242814000000 mov byte ptr [esp+00001428], 00 :004096A1 E8CE800300 call 00441774 :004096A6 8B7C2410 mov edi, dword ptr [esp+10] :004096AA 83C9FF or ecx, FFFFFFFF :004096AD 33C0 xor eax, eax :004096AF 8D95F8090000 lea edx, dword ptr [ebp+000009F8] :004096B5 F2 repnz :004096B6 AE scasb :004096B7 F7D1 not ecx :004096B9 2BF9 sub edi, ecx :004096BB 53 push ebx :004096BC 8BC1 mov eax, ecx :004096BE 8BF7 mov esi, edi :004096C0 8BFA mov edi, edx :004096C2 6A00 push 00000000//这里虽然也是0但这里是为了形成动画的时候调用的 :004096C4 C1E902 shr ecx, 02 //如果不想让他显示就改变参数就行了6A00->6A02 :004096C7 F3 repz :004096C8 A5 movsd :004096C9 8BC8 mov ecx, eax :004096CB 83E103 and ecx, 00000003 :004096CE F3 repz :004096CF A4 movsb * Reference To: SHELL32.Shell_NotifyIconA, Ord:0079h | :004096D0 8B3570E34400 mov esi, dword ptr [0044E370] :004096D6 FFD6 call esi :004096D8 8B4D1C mov ecx, dword ptr [ebp+1C] * Possible StringData Ref from Data Obj ->"CCProxy System Tray Icon Message" | :004096DB 68C8D64500 push 0045D6C8 :004096E0 C70358000000 mov dword ptr [ebx], 00000058 :004096E6 898DE4090000 mov dword ptr [ebp+000009E4], ecx :004096EC C785E80900000A000000 mov dword ptr [ebp+000009E8], 0000000A :004096F6 C785EC09000002000000 mov dword ptr [ebp+000009EC], 00000002 * Reference To: USER32.RegisterWindowMessageA, Ord:0200h | :00409700 FF1578E54400 Call dword ptr [0044E578] :00409706 8985F0090000 mov dword ptr [ebp+000009F0], eax :0040970C 8B1564164600 mov edx, dword ptr [00461664] --------------------------------------------------------------------------- 这里是软件退出时,用来删除图标的函数调用部分! :00409DAF 90 nop :00409DB0 A1484B4600 mov eax, dword ptr [00464B48] :00409DB5 56 push esi :00409DB6 85C0 test eax, eax :00409DB8 8BF1 mov esi, ecx :00409DBA 750F jne 00409DCB :00409DBC 8D86E0090000 lea eax, dword ptr [esi+000009E0] :00409DC2 50 push eax :00409DC3 6A02 push 00000002//看看这里和上面介绍的参数值进行一下比较 * Reference To: SHELL32.Shell_NotifyIconA, Ord:0079h//调用函数 | :00409DC5 FF1570E34400 Call dword ptr [0044E370]//调用如果成功则返回1 * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00409DBA(C) | :00409DCB 8B0DA8164600 mov ecx, dword ptr [004616A8] :00409DD1 E85A210000 call 0040BF30 :00409DD6 8B0DA8164600 mov ecx, dword ptr [004616A8] :00409DDC C7410400000000 mov [ecx+04], 00000000 :00409DE3 8BCE mov ecx, esi :00409DE5 C7059CD5450000000000 mov dword ptr [0045D59C], 00000000 :00409DEF E853410300 call 0043DF47 :00409DF4 5E pop esi :00409DF5 C3 ret ------------------------------------------------------------------------- 既然知道了这几处调用的作用我们就来做一下修改,软件在启动的时候会向任务栏加入一个图标,改这里行不行回答是不行. 为什么?因为软件在加入图标之后会为了完成动画作用继续使用这个函数来切换图标,所以即使你修改了启动时的部分在切换 图标的时候也还会产生,因此改一下生成动画部分函数参数就行了啊! 查找字符串:8BC18BF78BFA6A00C1E902 改为: ........... 6A02...... 这样修改之后软件启动后就不会在任务栏产生图标了(遇到的问题解决了) 小弟第一次写这样的文章不免有思路和过程上的漏洞,请大家多多指点和帮助.

转载于:https://www.cnblogs.com/QDuck/archive/2005/03/07/114589.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LintCode 1353. 根节点到叶节点求和(DFS)

1. 题目 给定仅包含来自0-9的数字的二叉树,每个根到叶路径可以表示数字。 举个例子:root-to-leaf路径1-> 2-> 3,它代表数字123,找到所有根到叶的数的总和 样例1 输入: {1,2,3} 输出: 25 解释:1/ \2 3 路径 1->2 表示…

1 亿巨资开发的防疫 APP,两年多只找到 2 例确诊

源 | 观察者网2020 年 4 月,澳政府斥巨资打造防疫 APP“COVIDSafe”。两年多过去了,这款曾被寄予厚望、当作通向防疫成功“门票”的 APP 寿命将近,于当地时间 8 月 9 日宣布将在不久后停用。澳大利亚卫生部长巴特勒(Mark Butler&a…

Sql 实现自动添加行数标记

select IDENTITY(int,1,1) as NameID,* into #t from MissionAssignView select * from #t order by NameID drop table #t 转载于:https://www.cnblogs.com/jhtchina/archive/2005/03/09/115532.html

Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库

在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,…

程序员面试金典 - 面试题 03.01. 三合一(数组栈)

1. 题目 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum 表示栈下标,value 表示压入的值。 构造函数会传入一个stackSize参数,代表每个栈的大小。 …

谷歌:级联语言模型是通用推理系统的未来

文 | ZenMoore前言相信每个 NLPer 心中都有对 Reasoning 的一片期冀。当初笔者进入 NLP 的大门,就是相信:由于语言强大的表达能力以及语言模型强大的建模能力,Reasoning 一定就在不久的将来!可惜实际情况却是......[流泪]直到我看…

Hibernate+mysql 中文问题解决方案.

1, mysql安装时设置字符集utf-8, jdbc驱动3.0.15以上. 2. hibernate配置文件中,加上属性 <property name"connection.useUnicode">true</property> <property name"connection.characterEncoding">UTF-8</property> 3. web.xml设置…

Spring Boot 2.x基础教程:Swagger静态文档的生成

前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后&#xff0c;我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块&#xff0c;可以先阅读&#xff1a; Spring Boot 2.x基础教程&#xff1a;使用Swagger2构建强大的API文档Sprin…

LintCode 802. 数独(回溯)/ LeetCode 37. 解数独

1. 题目 编写一个程序&#xff0c;通过填充空单元来解决数独难题。 空单元由数字0表示。 你可以认为只有一个唯一的解决方案。 LeetCode 37 题类似&#xff0c;把 int 改成 char&#xff0c;注意转换 2. 解题 行、列、小9宫格内 1-9 都只出现一次暴力回溯&#xff0c;坐标转…

完爆GPT3、谷歌PaLM!检索增强模型Atlas刷新知识类小样本任务SOTA

文 | 小戏不知不觉间&#xff0c;大模型小样本成为了小样本学习领域的主流打法&#xff0c;在许多的任务背景下&#xff0c;一套通用的思路是先标注小数据样本&#xff0c;再从预训练大模型的基础上使用小数据样本进行训练。尽管如我们所见&#xff0c;大模型在一众小样本学习的…

简单的分页类

<% LanguageVBScript %><% Option Explicit %><SCRIPT LANGUAGEVBScript RUNATSERVER> 确保引用 ADO Typelib 或使用 ADOVBS.Inc Dim iPageNum, iRowsPerPage Main Sub Main() Dim rst Dim sSQL, sConnString If Request.QueryString("iPageNu…

开源:Swagger Butler 1.1.0发布,利用ZuulRoute信息简化配置内容

Swagger Butler是一个基于Swagger与Zuul构建的API文档汇集工具。通过构建一个简单的Spring Boot应用&#xff0c;增加一些配置就能将现有整合了Swagger的Web应用的API文档都汇总到一起&#xff0c;方便查看与测试。 项目地址 Github&#xff1a;https://github.com/dyc87112/…

LeetCode 10. 正则表达式匹配(递归/DP)

文章目录1. 题目2. 解题2.1 递归2.2 DP1. 题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不…

.net 页面框架的层次问题,嵌套问题

第一层&#xff1a;Form1&#xff1a;<form id"Form1" runat"server">第二层&#xff1a;才是我们拖放的控件。<asp:TextBox id"TextBox1" runat"server"></asp:TextBox>一般来说就只有这两层了。但是我们想要控件嵌…

3000块能买AAAI的Strong Accept?

编 | Aeneas 好困源 | 新智元最近&#xff0c;知乎上爆出一张AI投稿群的匿名聊天截图&#xff0c;网友讨论「加群互相bid」&#xff0c;还说3000块就可以买到一个AAAI的「strong accept」。正值AAAI 2023论文截止提交之际&#xff0c;知乎上突然出现了一张AI投稿群的匿名聊天截…

Spring Boot中使用MongoDB的连接池配置

因为今天开发遇到了性能问题&#xff0c;可能与MongoDB的连接有关&#xff0c;所以稍稍深入看了一下&#xff0c;正好搜到原来有人写过这篇相关的内容&#xff0c;所以转载过来。回头有时间可以写个扩展到SpringForAll里&#xff0c;主体思路还是一样的。感谢这位美女程序媛的文…

LeetCode 409. 最长回文串(计数)

1. 题目 给定一个包含大写字母和小写字母的字符串&#xff0c;找到通过这些字母构造成的最长的回文串。 在构造过程中&#xff0c;请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。 注意: 假设字符串的长度不会超过 1010。 示例 1: 输入: "abccccdd" 输出…

又一名视觉大牛从大厂离开!阿里达摩院 XR 实验室负责人谭平离职

文 | 王玥编 | 陈彩娴源 | AI科技评论AI科技评论获悉&#xff0c;阿里巴巴达摩院 XR 实验室负责人谭平已于近日离职。谭平曾受邀担任国际顶级学术会议CVPR、SIGGRAPH、IROS领域主席&#xff0c;是3D视觉领域的标杆人物。谭平于2019年9月入职阿里人工智能实验室担任计算机视觉首…

【小马哥】Spring Boot系列讲座

这里推荐一个不错的Spring Boot系列讲座&#xff0c;讲师简介如下&#xff1a; 小马哥&#xff0c;阿里巴巴技术专家&#xff0c;从事十余年Java EE 开发&#xff0c;国内微服务技术讲师。目前主要负责微服务技术推广、架构设计、基础设施、迁移等。重点关注云计算、微服务以及…

程序员面试金典 - 面试题 03.03. 堆盘子 (vector(stack))

1. 题目 堆盘子。设想有一堆盘子&#xff0c;堆太高可能会倒下来。因此&#xff0c;在现实生活中&#xff0c;盘子堆到一定高度时&#xff0c;我们就会另外堆一堆盘子。 请实现数据结构SetOfStacks&#xff0c;模拟这种行为。SetOfStacks 应该由多个栈组成&#xff0c;并且在…