首页
社区
课程
招聘
[求助] 制造lua库的sig
发表于: 2018-1-20 07:52 4014

[求助] 制造lua库的sig

2018-1-20 07:52
4014

我想制造lua库的sig  完后IDA加载识别  编译器是vs2013 但是因为不同的编译选项 都可能影响最后的编译结果  导致匹配失败 所以需要尝试每一种可能 找到所有会影响编译结果的编译选项 比如优化选项/O2  /O1等等都会影响最后的代码 所以需要写个脚本 把每一种可能都试一次 编译一次  cl.exe的编译选项那么多 我估算了一下 有90多个选项可能影响最后的代码 那么它就有(2的90次方-1)种组合 我的脚本要尝试这么多次  简直不可能完成的任务  不知道谁有解决办法或者更好的主意?ps:我脚本已经写完 运行了几个小时 还在编译 已经生成了4000多个lib 太可怕 我就关掉了 想了一下 可以添加过滤规则 检测一些组合是否符合规范 比如/O1和/Ox是矛盾的 不能在一个组合里 另外缩小编译选项的范围 从90个缩小到20多个 应该没问题 但是目标进程用的lua库恰好是别的选项编译出来的 而我没有考虑在内 那么我制造的sig  ida就无法识别匹配了


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
2
先直接拿官方库一试    再根据游戏  编译版本匹配下    编译器默认设置release版本    一般这个没人改    如果改了代码那就没辙了
2018-1-20 10:21
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
我就是拿着官方的lua源码编译  每一种可能都尝试啊  游戏编译版本是怎么知道的?编译器release版本和debug版本是有区别的    改了怎么没辙了?没看懂你说的  debug版本虽然没有优化  但是加上一些其它选项  一样可以起到干扰ida匹配的目的  所以每一种可能都要考虑
2018-1-20 19:01
0
雪    币: 1176
活跃值: (1264)
能力值: ( 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:

上传的附件:
2018-1-20 19:46
1
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
嗯  不同的编译选项都可能影响最后的结果  关键你不知道他游戏是用哪个编译选项编译优化的  所以才需要每一种都要尝试  我以为你有办法解决 
2018-1-21 03:04
0
雪    币: 2260
活跃值: (6618)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
6
这种东西,需要时间来维护吧,一份版本存储一份SIG,没法投机取巧啊
2018-11-27 09:41
0
雪    币: 6124
活跃值: (4651)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
不能取巧,一般的游戏厂商都会修改lua的源码适应其需要,比如cocos就是魔改版的luajit。即使不魔改源码,他们也会自己编译源代码这个时候他自己使用的编译器就会对最终产生的机器码产生影响。我觉得不需要提前做工作,有了需求拿到样本在对症下药比较好,可以节省时间。
2018-12-18 14:47
0
游客
登录 | 注册 方可回帖
返回
//