基于IDA的逆向分析协同工具目前还没有发现比较好用的东西,而像传统的基于源代码的开发IDE则有比较多的选择。对于大型项目和代码的分析,仅靠一人之力其实是比较困难的,并且需要分析的内容太多。这也是这个插件开发出来的原因。
ida-sync-plugin for ida 6.x opensource
公开ida sync plugin源代码,项目地址:http://code.google.com/p/ida-sync-plugin/。
IDA_SYNC_PLUGIN (v2.0.0.1) for IDA 6.x
这个插件已经有很多年的历史了,话说也好几百年没更新了。不知道还有冇淫用这个东西,前一段时间曾经编译了支持6.x的插件,http://www.h4ck.org.cn/2012/06/ida-sync-for-ida-6-x/。但是在使用的过程中发现还是有很多问题的,比如函数名称push的问题。
PyDbg安装(《Python 灰帽子》)
这本书是这两天刚买到的,从前天开始看,然后到昨天晚上就看完了,整体的感觉就是书的内容虽然不错但是感觉有点太少了,一种意犹未尽的感觉。
Calling IDA APIs from IDAPython with ctypes
IDAPython 提供了一些列封装好的ida sdk函数,但是由于SWIG的限制或者一切其他的原因有一部分api并没有封装到这个库中。为了能够调用在idapython中没有封装的api函数get_loader_name(),但是又不想因为调用这么一个简单的函数而编写一个插件进行测试,那么此时就可以使用ctypes 来实现了。
所有IDA API都是由ida的核心动态库来提供的,在Windows系统下这个库为ida.wll(或者ida64.wll),在linux系统下为libida[64].so,在os x系统下为libida[64].dylib. ctypes提供了一个非常好的功能来创建一个封装的Dll到处函数类,可以把他们看成一个类实例的属性来调用。下面的代码用于获取不同系统下的ida实例:
import ctypes
import sys
idaname = "ida64" if __EA64__ else "ida"
if sys.platform == "win32":
dll = ctypes.windll[idaname + ".wll"]
elif sys.platform == "linux2":
dll = ctypes.cdll["lib" + idaname + ".so"]
elif sys.platform == "darwin":
dll = ctypes.cdll["lib" + idaname + ".dylib"]
我们使用windll是因为ida的api在windows系统下是使用stdcall调用约定的(可以通过查看pro.h中队用的idaapi的定义来确定调用类型)
现在我们只需要像调用一个dll对象的一个属性一样来调用我们的函数,但是首先我们要准备好我们函数需要的参数,下面是从loader.hpp中得到的函数的定义:
idaman ssize_t ida_export get_loader_name(char *buf, size_t bufsize);
ctypes提供了一个非常方便的函数来创建字符buffer:
buf = ctypes.create_string_buffer(256)
Wing IDE 4.1 Windows CracK Log
话说在看雪上发了这个东西木有人鸟俺, 那就发到自己的blog上做个备份吧。
猛击此处下载pdf!
Python ByteCode(opcode) & HexCode
为了修改上一篇文章《Wing IDE 4.1 Windows Crack 【续】》中的提到的二进制代码,在网上到处搜索。但是虾米东西都没找到,俺的Google用的太烂了。 😀 不过后来忽然想到那个unpyc既然能解码二进制文件,那么其中肯定有相关的代码引擎进行转换了?直接去那里面找不就得了。事实是,果然让我猜对了。嘎嘎。在opcodes.py文件中找到了相关的代码和对应的十六进制数值。我实在太聪明啦。哈哈
IDA批量模式 Python Script[fix]
#########################################
#Ida batch mode test code by obaby
#2012.03.13
#Mars Security
#http://www.h4ck.org.cn
#Email:root@h4ck.ws
#########################################
import sys
import os
import subprocess
# Fill these feilds with ur own ida file path and the idc file u want to execute!
idcScriptFileName = "batchmode.idc"
ida32qFilePath = '"F:\Crackl@b\Hex-Rays.IDA.Pro.Advanced.v6.1\ida61\idaq.exe"'
ida64qFilePath = "F:\Crackl@b\Hex-Rays.IDA.Pro.Advanced.v6.1\ida61\idaq64.exe"
ida32wFilePath ='"F:\Crackl@b\Hex-Rays.IDA.Pro.Advanced.v6.1\ida61\idaw.exe"'
ida64wFilePath = "F:\Crackl@b\Hex-Rays.IDA.Pro.Advanced.v6.1\ida61\idaw64.exe"
#The binary file list text
TargetList = "F:/Python 2.6/_eric4project/idabatchmode/list.txt"
TargetFile_object = open(TargetList, "r").readlines()
for eachline in TargetFile_object:
#print eachline,
#print eachline
eachline = eachline.replace('\n','').replace('\r', '')
if os.path.exists(eachline):
tmpExecStr = ida32wFilePath +" -A -c -S"+idcScriptFileName +" " + '"'+eachline+'"' #fixup the space in the file path
print tmpExecStr,
#os.system(tmpExecStr) #singl process with cmdwindow
#os.popen(tmpExecStr) singl process without cmdwindow
subprocess.Popen(tmpExecStr) #mulity process with cmd window
print ("All Process have been started!")
修正文件路径包含空格时找不到文件的问题,这个如果自己写的话应该是可以避免的。发现一个比较奇怪的问题,在win7下subprocess.Popen竟然不显示cmd窗口,但是在xp下显示。这是为什么? :8