能力值:
( LV2,RANK:10 )
|
-
-
2 楼
貌似是根据文件名找的UDD吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不知道你的OD是什么版本? 下面的python脚本是针对版本1.1的,供你参考:
########################
# Tested with Python 2.7
# udd file version 1.1
#######################
import os, sys
import struct
import datetime
def FindUs(f, data): # get offset and comments
index, key = FindKey(data)
while index:
f.seek(index + 7)
offset = f.read(4)
hexstr = hex(struct.unpack('I', offset)[0])
Writefile(hexstr + '\t\t' + f.readline()[:-2] + \
'[*User*]' * (key == 'Us6'), output) # *User* for User comments
data = data.replace(key, 'XXX', 1)
index, key = FindKey(data)
def Writefile(string, f):
f.writelines(string + '\r\n')
def FindKey(data):
index_c = data.find('Us:') # OD generated comments
index_u = data.find('Us6') # User added comments
if index_c == -1 and index_u == -1:
return None, None
elif index_c < index_u or index_u == -1:
return index_c, 'Us:'
else:
return index_u, 'Us6'
def PrintHeader(f, data): # generate the header
f.seek(8)
v_str = f.read(21)
Writefile('"'* 40, output)
Writefile(v_str, output)
Writefile('Generated on ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M'), output)
Writefile('"' * 40 + '\r\n', output)
if __name__ == '__main__':
try:
udd_file = sys.argv[1] # get parameter as file
f = open(udd_file, 'rb')
data = f.read() # read file as string
output = open(udd_file + '.txt','w') # create a new file
Writefile('FileName: ' + udd_file, output)
PrintHeader(f, data)
Writefile ('Offset\t\t' + 'Comments', output)
Writefile('======'.ljust(20) + ('='* 25).ljust(50), output)
FindUs(f, data)
Writefile('\r\n[END OF FILE]', output) # File is done
f.close()
output.close()
sys.exit(0)
except:
raise
比如保存脚本为uddReport.py,运行的话可以:
python uddReport.py udd文件名
不出错的话会生成 udd文件名.txt。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
对以上的脚本进行了修改,以兼顾OD 2.01版本。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
好东东啊,多谢
不知能否导出label?(现在只有comment)
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
应该可以导出label。
不过上面的版本速度太慢,下面的版本改用正则后提高了不少。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
这个版本好快,但是出现了BUG
原先
0xfcb08 3.01修复后:如果丹青远游,杭州事件后继续远游[*User*]
0xfcb2d 杭州行3回合[*User*]
0xfcc72 C4事件(洛阳花会[*User*]
0xfcd2c 87事件(凌云窟化解刀剑门[*User*]
这个
0xfcb08 .01修复后:如果丹青远游,杭州事件后继续远游
0xfcb2d 杭州行3回合
0xfcc72 C4事件(洛阳花会
0xfcd2c 事件(凌云窟化解刀剑门
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
[QUOTE=darkradx;1193743]这个版本好快,但是出现了BUG
原先
0xfcb08 3.01修复后:如果丹青远游,杭州事件后继续远游[*User*]
0xfcb2d 杭州行3回合[*User*]
0xfcc72 C4事件(洛阳花会[*User*]
0xfcd2c 87事件(凌云窟化解刀剑门[*User*]
这...[/QUOTE]
上面的问题是由不同的OD版本引起的。那个*User*就不要管它。试试上面的更新如何?
看来得多做几个版本
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
"起始数字被吞"的问题修好了
能加入导label吗
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
它label也能导出的。测试下吧
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
真的没见到label啊
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
我试了试,还真是没有导出v1.1的label。所以我把上面的脚本更新了。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
这次可以了导出label
能不能导出的地址加上400000
我就可以直接调整一下格式,用labelmaster/myinfo导入了
我悲剧的一次就是两个同名的EXE文件,作用相同,就是OEP不同还是Section不同,导致OD重新分析
label/comment因为没导出备份,udd已经清了,bak又导不出来,前面的辛苦全破费了
现在有了uddReport就好了:)
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
导出的地址可以加上400000,但需要注意的是,并不是所有的PE文件base都是400000。
有两种办法:
1)自己指定image base。格式例子: 0x400000
(这个通过OD很容易查到)
需要把脚本文件中下面一行注释掉:
#import pefile
2)指定exe文件的路径,如 "C:\Program Files (x86)\Search32\Search32.exe"。脚本会计算 但这个办法,需要安装一个pefile模块:
下载地址:http://pefile.googlecode.com/files/pefile-1.2.10-123.zip
运行格式:
python uddReport.py [udd文件] [ImageBase]
或
python uddReport.py [udd文件] [exe文件的路径]
【注】如果udd文件或exe文件的路径字串中有空格的话,要用引号(单双皆可)引起来。
|
|
|