遇到一个用pyinstaller打包的exe程序,看了各位大佬的逆向教程,在修改main文件的16进制时,E3前段并没有时间戳和magic。直接添加.pyc后缀也没法反编译。
首先查壳,发现并没有加壳,并且是pyinstaller打包的。
于是使用pyinstxtractor进行解包后得到:
[Shell] 纯文本查看 复制代码 │ base_library.zip
│ libcrypto-1_1.dll
│ libssl-1_1.dll
│ pyiboot01_bootstrap
│ pyimod01_archive
│ pyimod02_importers
│ pyimod03_ctypes
│ pyi_rth_inspect
│ pyi_rth_subprocess
│ python310.dll
│ PYZ-00.pyz
│ select.pyd
│ software
│ struct
│ unicodedata.pyd
│ VCRUNTIME140.dll
│ _bz2.pyd
│ _decimal.pyd
│ _hashlib.pyd
│ _lzma.pyd
│ _socket.pyd
│ _ssl.pyd
│
└─PYZ-00.pyz_extracted
argparse.pyc
ast.pyc
base64.pyc
bisect.pyc
bz2.pyc
calendar.pyc
contextlib.pyc
contextvars.pyc
copy.pyc
csv.pyc
dataclasses.pyc
datetime.pyc
decimal.pyc
dis.pyc
email.base64mime.pyc
email.charset.pyc
email.contentmanager.pyc
email.encoders.pyc
email.errors.pyc
email.feedparser.pyc
email.generator.pyc
email.header.pyc
email.headerregistry.pyc
email.iterators.pyc
email.message.pyc
email.parser.pyc
email.policy.pyc
email.pyc
email.quoprimime.pyc
email.utils.pyc
email._encoded_words.pyc
email._header_value_parser.pyc
email._parseaddr.pyc
email._policybase.pyc
fractions.pyc
ftplib.pyc
getopt.pyc
getpass.pyc
gettext.pyc
gzip.pyc
hashlib.pyc
http.client.pyc
http.cookiejar.pyc
http.pyc
importlib.abc.pyc
importlib.machinery.pyc
importlib.metadata.pyc
importlib.metadata._adapters.pyc
importlib.metadata._collections.pyc
importlib.metadata._functools.pyc
importlib.metadata._itertools.pyc
importlib.metadata._meta.pyc
importlib.metadata._text.pyc
importlib.pyc
importlib.readers.pyc
importlib.util.pyc
importlib._abc.pyc
importlib._bootstrap.pyc
importlib._bootstrap_external.pyc
inspect.pyc
logging.pyc
lzma.pyc
mimetypes.pyc
netrc.pyc
nturl2path.pyc
numbers.pyc
opcode.pyc
optparse.pyc
pickle.pyc
pprint.pyc
py_compile.pyc
quopri.pyc
random.pyc
selectors.pyc
shlex.pyc
shutil.pyc
signal.pyc
socket.pyc
ssl.pyc
statistics.pyc
string.pyc
stringprep.pyc
subprocess.pyc
tarfile.pyc
tempfile.pyc
textwrap.pyc
threading.pyc
tracemalloc.pyc
typing.pyc
uu.pyc
zipfile.pyc
_compat_pickle.pyc
_compression.pyc
_pydecimal.pyc
_py_abc.pyc
_strptime.pyc
_threading_local.pyc
解包过程一切正常,并没有报错或者警告
按照大佬们的教程,接着就对software文件(main文件)添加时间戳和magic,用winhex打开software和struct比对内容
主文件:
struct文件:
到这里发现E3开头,16进制是一样的,并没有发现多出来的时间戳和magic内容,查看文件夹内其它类似文件(如:pyi_rth_inspect,pyi_rth_subprocess,pyiboot01_bootstrap,pyimod01_archive,pyimod02_importers,pyimod03_ctypes),E3的开头都是对齐相同的,并没有多出来的内容。
接下来强行添加pyc后缀,尝试反编译,安装uncompyle6来反编译,直接报错,显示缺少magic字段。
求大佬们解释一下,小白第一次尝试逆向,不会的有好多,大佬们口下留情。
|