能力值:
( LV12,RANK:380 )
2 楼
先直接拿官方库一试 再根据游戏
编译版本匹配下 编译器默认设置release版本 一般这个没人改 如果改了代码那就没辙了
能力值:
( LV8,RANK:130 )
3 楼
我就是拿着官方的lua源码编译 每一种可能都尝试啊 游戏编译版本是怎么知道的?编译器release版本和debug版本是有区别的 改了怎么没辙了?没看懂你说的 debug版本虽然没有优化 但是加上一些其它选项 一样可以起到干扰ida匹配的目的 所以每一种可能都要考虑
能力值:
( LV12,RANK:380 )
4 楼
.....感觉不像是有2级精华的人的该有的疑问.. 需要的编译的那叫源码 我说的官方库当然是官方编译好的staic library 比如说 游戏编译版本就是 比如pe 就可以拿exeinfo peid查看信息 微软的会有会有Microsoft Visual C++ ver. 14.0 (12.0 10.0 ) 14.0就是vs2015 国外开源项目一般喜欢用gcc编译 那版本就更多了 那fork自己修改的就更不用说了.. 所以当官方库没用的时候你自己看信息相应地编译下 发行的一般是release版本吧 所以debug就没道理去尝试 当然也不排除有人用... 还有用了lua库的一般有字符串版权信息比如我现在手上的一个...
.rdata:1038CA38 aLuaLua511Copyr db '$Lua: Lua 5.1.1 Copyright (C) 1994-2006 Lua.org, PUC-Rio $',0Ah
.rdata:1038CA38 db '$Authors: R. Ierusalimschy, L. H. de Figueiredo & W. Celes $',0Ah
.rdata:1038CA38 db '$URL: www.lua.org $',0Ah,0
改了代码没辙了 意思是 ida那个签名就是对比函数字节码 你改了代码当然会导致修改过的函数的字节码不一样 你也知道优化可以影响对不对...编译器也可以影响 这是官方的编译好的库: https://sourceforge.net/projects/luabinaries/files/?source=navbar 我弄好的一个签名lua5_0_3_Win32_vc8_lib:
上传的附件:
能力值:
( LV8,RANK:130 )
5 楼
嗯 不同的编译选项都可能影响最后的结果 关键你不知道他游戏是用哪个编译选项编译优化的 所以才需要每一种都要尝试 我以为你有办法解决
能力值:
( LV7,RANK:102 )
6 楼
这种东西,需要时间来维护吧,一份版本存储一份SIG,没法投机取巧啊
能力值:
( LV6,RANK:80 )
7 楼
不能取巧,一般的游戏厂商都会修改lua的源码适应其需要,比如cocos就是魔改版的luajit。即使不魔改源码,他们也会自己编译源代码这个时候他自己使用的编译器就会对最终产生的机器码产生影响。我觉得不需要提前做工作,有了需求拿到样本在对症下药比较好,可以节省时间。