flirt: enable only on py3, ignore otherwise

This commit is contained in:
William Ballenthin
2021-03-15 13:38:29 -06:00
parent 4db6227d84
commit 177605aaf8
3 changed files with 18 additions and 9 deletions

View File

@@ -5,12 +5,13 @@
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the License.
import sys
import types
import logging
import viv_utils
import viv_utils.flirt
if sys.version_info >= (3, 0):
import viv_utils.flirt
import capa.features.extractors
import capa.features.extractors.viv.file
@@ -84,7 +85,11 @@ class VivisectFeatureExtractor(FeatureExtractor):
yield feature, va
def is_library_function(self, va):
return viv_utils.flirt.is_library_function(self.vw, va)
if sys.version_info >= (3, 0):
import viv_utils.flirt
return viv_utils.flirt.is_library_function(self.vw, va)
else:
return False
def get_function_name(self, va):
return viv_utils.get_function_name(self.vw, va)

View File

@@ -5,10 +5,12 @@
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and limitations under the License.
import sys
import viv_utils
import envi.memory
import viv_utils.flirt
if sys.version_info >= (3, 0):
import viv_utils.flirt
import envi.archs.i386.disasm
import capa.features.extractors.viv
@@ -113,10 +115,11 @@ def extract_insn_api_features(f, bb, insn):
if not target:
return
if viv_utils.flirt.is_library_function(f.vw, target):
name = viv_utils.get_function_name(f.vw, target)
yield API(name), insn.va
return
if sys.version_info >= (3, 0):
if viv_utils.flirt.is_library_function(f.vw, target):
name = viv_utils.get_function_name(f.vw, target)
yield API(name), insn.va
return
for _ in range(THUNK_CHAIN_DEPTH_DELTA):
if target in imports:

View File

@@ -380,7 +380,8 @@ def get_workspace(path, format, sigpaths):
else:
raise ValueError("unexpected format: " + format)
register_flirt_signature_analyzers(vw, sigpaths)
if sys.version_info >= (3, 0):
register_flirt_signature_analyzers(vw, sigpaths)
vw.analyze()