-
-
[原创]手游之u3d之dll文件加密之手动修复
-
发表于: 2020-12-6 20:42 4414
-
文章标题不知道怎么取。。。
所需工具:
010editor
.NET Reflector
一款国外破解版的游戏,u3d引擎,想看修改了啥,但是无奈打开后是这样的
dll加密了,首先想到的是从内存中去抠出来,于是经过一番操作后从内存中扣出来,具体怎么从内存中,这里略过,不是本文重点,网上可以自己找找。
使用反编译工具打开后还是这样
这么牛逼,不用解密就能执行的吗,
好吧,那对比下,
纳尼???内存中抠出来的和加密后的文件对比是一模一样的,说明它可能不需要解密就能执行,那就是可能是破坏了某些段导致反编译工具无法正确反编译,pe格式是这样的,某些段可以修改后不影响执行。
如果dll文件被反编译修改后,和源文件是有差别的,文件大小,pe格式里面的各种段是会改变的,这就导致无法和原版做对比。
祭出文件万能打开工具010editor,还有pe格式模板
下载:https://www.sweetscape.com/010editor/repository/templates/
搜索:EXE.bt
打开后:
明显缺了好多个段
,
下面就开始本文的重点了
手动修复试试
映入眼帘,一眼看出pe格式头部被破坏,pe格式标准头部:50 45 00 00
每次改后,就重新执行一下模板,再使用.NET Reflector打开试试,如果能正确反编译就证明修改完成
解析错误证明有些段的偏移被破坏过了,导致模板无法正常跑通
指向OPTIONAL_HEADER32的大小是0xE0,但是这里只解析到0xA0,很明显就是错的。
接下来我们看OPTIONAL_HEADER32结构体,有几个很重要的信息
这里我们要验证下那个指向程序入口的地址,0x34484E,
计算公式是0x34484E – 0x2000 +0x200 = 0x342A4E
跳过去看一下,是对的,一般入口都是 FF 25开头
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [分享]frida主动调用init_array中的函数 1610
- il2cpp api偏移查找 2488
- [原创]一次svc简单绕过 3844
- [分享]global-metadata.dat,libil2cpp.so解密修复 13998
- [原创]PE文件格式 2760