我工作的地方有人使用Java项目并使用Eclipse将该项目导出到.war包中。
现在我需要在所有生成.war包的文件中搜索一个字符串。我知道.war包只是一个.zip文件,我已经提取了它的内容,但是,现在我有一堆.class java文件(在图像,xmls和其他东西之间),我不知道如何在其中搜索字符串。
我是Linux Mint用户,所以我尝试使用“grep -R stringHere”。命令没有成功(我不是高级用户),此命令只搜索文本文件。
我还搜索并找到了crgrep project,但它目前已被窃听,但无效。
有没有人知道一个linux命令可以搜索.war包的所有内容并检查这些内容是否包含特定的字符串或代码示例?
我真的需要找到一种方法来搜索.class文件的内容。这是我到目前为止唯一的优先事项。我不关心图像,也不关心任何其他类型的文本文件。
这会有很大帮助。 提前谢谢,佩德罗。
答案 0 :(得分:2)
像任何常规拉链一样解压缩你的战争,并使用
从根搜索解压缩find . -name "*.class" -print0 |xargs -0 strings -f |grep -i <your string>
祈祷你的字符串在二进制文件中以明文形式编码。
答案 1 :(得分:1)
这很简单,你可以使用下面的内容。
find /path -name "*.*" -exec grep -l "string-to-search"{} \;
如果您需要通过忽略大小写进行搜索,则可以-i
使用-l
。
您可以进一步阅读here。
答案 2 :(得分:1)
我建议你使用jad。 安装后,以下命令应该可以正常工作:
find . -name "*.class" | xargs jad -p | grep "your string"
答案 3 :(得分:0)
这不是一个java问题。
但是,您可以使用strings
命令:
find . -name "*.class" | xargs strings | grep myString
它可能会找到您正在寻找的字符串。但是你为什么要在编译的二进制文件中寻找字符串?你期望找到什么样的字符串?如果这是你的代码,为什么不在源代码中搜索字符串,即java文件?
答案 4 :(得分:0)
.war文件中没有源代码。您将看到已编译的.class文件。这是无法阅读的,否则您将找不到任何有意义的内容。
从您的问题来看,我认为您必须使用反编译器将.class转换为.java文件。我会建议以下选项。
因此,一旦您对.class文件进行了反编译,就可以使用任何工具(如grep)来搜索字符串..
答案 5 :(得分:0)
使用查找命令:
find mywar.war -name '*.class' -exec strings -f "{}" + | grep "mysearchstringhere"