能力值:
( LV2,RANK:10 )
|
-
-
2 楼
你应该是新人,你可以先了解什么文件,文件的定义是什么。
不论什么文件都有自己的一套堆叠逻辑。说白了123456789。你要想取5,就定位5的位置和长度。很多游戏资源文件都是以堆叠的方式储存,但这些数据【包括zip,rar】他都不是随意堆叠整合,比喻说。每个数据的起始位置会放在文件头,和长度。 或者直接以:数据长度+数据+数据长度+数据........ 长度4字节+首4字节整形为长度得到第二段数据开头,也就是第二段数据长度。
等等。不说了,喝多了。自己琢磨吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
ffashi
你应该是新人,你可以先了解什么文件,文件的定义是什么。
不论什么文件都有自己的一套堆叠逻辑。说白了123456789。你要想取5,就定位5的位置和长度。很多游戏资源文件都是以堆叠的方式储存,但这 ...
嗯嗯 现在有个思路是 按照PE文件格式解析 可以得到对应的结构 关键是如何提取中文字符串呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import sys
def strings(file):
chars = r"A-Za-z0-9/\-:.,_$%'()[\]<> \u4e00-\u9fa5"
shortestReturnChar = 4
regExp = '[%s]{%d,}' % (chars, shortestReturnChar)
pattern = re.compile(regExp)
with open(file, 'rb') as f:
return pattern.findall(f.read().decode(errors='ignore'))
if __name__ == "__main__":
len = len(sys.argv)
if len <= 1:
exit(0)
lines = strings(sys.argv[1])
for line in lines:
print(line) 这段代码可以提取中英文字符串,例如: 1 #include <stdio.h>
2
3 int main()
4 {
5 printf("你好中国\n");
6 return 0;
7 } $ gcc -o test test.c
$ python strings.py test | head -n 20
/lib64/ld-linux-x86-64.so.2
libc.so.6
puts
__cxa_finalize
__libc_start_main
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
HHPTL
H5B/
H)HH
AVIAUIATAUH-,,
SL)H
LLDA
H9uH
A_ff.
你好中国
GCC:
(Ubuntu 注:我测试使用的是linux系统。如果你需要提取windows程式的中文字符串,请修改decode中的encoding="gb2312"
最后于 2021-2-19 23:44
被crackwiki编辑
,原因:
|
|
|