首页
社区
课程
招聘
[原创][tools] which实现原理
发表于: 2019-5-14 23:27 5678

[原创][tools] which实现原理

2019-5-14 23:27
5678

Linux下很多好用的命令行工具,各种复杂的操作,几个命令就完成了。本节将要说的就是which命令。

windows下也可以使用Linux命令,只要你安装了Cygwin等程序即可;当然,如果你安装了git,也可以找到很多Linux命令工具(我安装在D盘了,目录为D:\Program Files\Git\usr\bin\which.exe)。

下面演示下程序的使用:

可以看出,如果能找到目标程序cmd,which将显示其全路径;如果没有找到目标程序,将提示出未找到,并打印搜索路径。

从上面的例子可以猜测,which通过系统搜索规则,查找相关路径下是否有目标程序。

具体实现可以查看源码,源码地址为7daK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2A6M7Y4u0G2M7Y4y4Q4x3X3g2#2M7%4c8U0i4K6u0W2k6h3c8#2i4K6u0W2j5$3&6Q4x3V1k6Y4L8Y4g2Q4x3V1k6%4K9r3W2U0K9q4)9J5c8Y4N6Z5K9h3y4Z5i4K6u0V1x3W2)9J5k6e0t1I4i4K6u0W2N6r3q4J5i4K6u0W2k6%4Z5`.,其中找到which.c可以查看详细实现。

windows有多个相同名称应用的时候,经常遇到需要确认程序路径的情况,比如adb.exe,常常因为多个版本导致异常结果。一直想在windows下写个类似的which程序的功能,又觉得太过琐碎,实现起来麻烦。不过,今天忽发奇想,LoadLibrary函数加载PE文件的搜索路径和which搜索路径如出一辙,何不通过LoadLibrary函数实现which功能呢。

于是写了下面代码:

设置adb环境变量前,运行结果如下图所示,不能正确查找到目标进程路径:

设置adb环境变量前

设置adb环境变量后,运行结果如下图所示,正确地将目标进程路径打印了出来:

设置adb环境变量后

相关源码已上传git:defK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6F1K9h3&6W2j5$3g2F1N6s2y4Q4x3V1k6y4P5f1!0H3k6h3&6Q4x3V1k6@1M7X3g2W2i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3N6r3!0G2L8s2y4Q4x3V1k6@1L8$3!0D9M7H3`.`.

九分出品,欢迎吐槽。更多精彩,可以前往博客地址

 
 

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2019-5-14 23:29 被kinghzking编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Windows 有一个命令叫 where,有点像 Linux 的 whereis,它的第一行就相当于 which 了
2019-5-15 00:52
1
雪    币: 12663
活跃值: (3172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
要PATH变量搜索目录有的才行
2019-5-15 07:14
0
雪    币: 4129
活跃值: (879)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
rongge 要PATH变量搜索目录有的才行
loadlibrary也搜索了path,是还有别的没考虑到吗
2019-5-15 08:33
0
雪    币: 4129
活跃值: (879)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
junkboy Windows 有一个命令叫 where,有点像 Linux 的 whereis,它的第一行就相当于 which 了
受教了,以后再也不怕程序走丢了。
2019-5-15 09:11
0
雪    币: 13530
活跃值: (6208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

学习了,多谢楼主分享
2019-5-15 14:45
0
雪    币: 4129
活跃值: (879)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
xie风腾 [em_4] 学习了,多谢楼主分享
客气了
2019-5-15 15:27
0
雪    币: 612
活跃值: (1571)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
SearchPath
cbeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0M7$3c8F1i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3P5X3S2Q4x3X3c8U0L8W2)9J5c8X3I4A6j5Y4u0S2M7Y4W2Q4x3V1k6%4K9h3&6V1L8%4N6K6i4K6u0r3k6r3g2K6K9%4c8G2M7q4)9J5c8X3q4S2x3K6j5#2y4e0t1%4i4K6t1^5N6W2)9K6c8s2k6K6i4K6u0W2z5o6g2Q4x3U0W2Q4x3X3g2S2M7%4m8^5
2019-5-15 15:43
0
游客
登录 | 注册 方可回帖
返回