python 反编译

步骤1:

(前置)下载pyinstxtractor.py

①将pyinstxtractor.py文件移动到想要解包的文件目录下 
②并在当前目录下输入cmd打开终端,执行>python pyinstxtractor.py 待反编译.exe
eg:E:\my_decode>python pyinstxtractor.py service_decode.exe

步骤2:

①在生成的文件夹service_decode.exe_extracted下找到:没有后缀的service_decode文件、和struct文件;

②以上两个文件和“第2步修改头文件.py”放同级目录,运行py,

'''
第2步修改头文件.py

为了添加pyc的字节头;所以不需要把所有的字节显示出来,
只需要把文件前16个字节打印出来,
'''
def fanbianyi_main():
    f1=open('E:\my_decode\startcpchost.exe_extracted\struct', 'rb')#打开struct文件
    f2=open('E:\my_decode\startcpchost.exe_extracted\server_decode', 'rb')#打开待反编文件
    name='E:\my_decode\startcpchost.exe_extracted\server_decode'
    w2_all=f2.read()#先读取待反编文件原来的内容
    f2.seek(0)#读取完之后从头开始
    w=f1.read(17).hex()#struct再读取16个字节用于比较
    w2=f2.read(17).hex()#反编译也读取16个用于比较
    print("struct也读取16个用于比较:",w,w2,sep='\n')#打印出来让我们看见
    '''
    w1:420d0d0a000000007079693010010000e3
    w2:e300000000000000000000000006000000
    '''
    add=input('Please input the codes you need to write:')#然后问你要在开头写入什么
    add=bytes.fromhex(add)#把普通字符串转换为bytes格式,并不是encode,而是fromhex(),把字符串看成是十六进制编码
    f2.close()#关闭
    f2=open(name+'.pyc', 'wb')#创建pyc待反编文件
    f2.write(add+w2_all)#把加入的字节和原来的字节合并写入文件
    f1.close()
    f2.close()
    print('完成添加struct的头到反编译文件中')
    input()

if __name__ == '__main__':
    fanbianyi_main()

 {注:待反编译的文件以e3打头,而struct第17个字节是e3,所以把stuct的前16个复制到 待反编译的文件中;总之是把e3前的加入到待反编译的文件中,如果是12位就拷贝12位,依此类推}

步骤3:

(前置)pip3 install uncompyle6

①uncompyle6 main.pyc > test.py 
eg: E:\my_decode\
service_decode.exe_extracted>uncompyle6 service_decode.pyc >server_decode.py

E:\my_decode\service_decode.exe_extracted 文件夹下找到反编译后的代码server_decode.py

注:

如果是由多文件打包成一个.exe的,反编译只能获取main/主文件的.py,被引用文件在此目录下,暂未找到方法转换,有方法的欢迎留言;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值