albertan017

Results 61 comments of albertan017

汇编相似性我们也有考虑,但在反编译中,无法事先知道各类编译选项,直接对比匹配度很低。最终又回到用大模型抽象asm的embdding,比较embd相似了。后续我们考虑[codealign](https://github.com/squaresLab/codealign),[d-helix](https://github.com/purseclab/D-helix)这类评估方式,有兴趣可以看看一起讨论~

Thank you for the positive feedback on our work. Right now, our scope is confined to the Linux x86_64 platform. However, our team is actively developing a a more versatile...

> Hi @albertan017, is the team also planning on adding other architectures such as ARM64? Yes, we're working on more supporting more architectures. Our final goal is to develop something...

模型只训练了x64-linux,不建议尝试使用这个模型反编译windows平台软件~ 另外这个报错看起来像是ghidra的问题,可以对应平台版本问题:机器平台(win/linux/mac),二进制文件格式(pe/elf/mahco)

linux下按照文档步骤操作就可以了,这个import是ghidra调用这个script的时候内部环境import的,不是用户额外安装的。windows平台没有尝试过,手头上没有window环境,不太确定问题在哪里。可以试试使用windows的wsl: https://learn.microsoft.com/en-us/windows/wsl/install 安装个linux在这个里面操作,很方便的

是的,长度越长效果越差(本身长函数也比较困难)。另外v1.5训练数据偏短,asm平均200个token(估计一百行以内),我们正在重新采集数据,希望下一个版本可以更加实用~

项目只训练了x64-linux,安卓属于arm64-android,指令集和平台差异都很大。整个文件不太可行,长度一般超限。常见的做法是把函数切分出来,逐个函数反编译

v1.5/v2训练最大长度4096,不过训练数据主要是2000以内。 使用文档里面提示了, Note: Replace func0 with the function name you want to decompile. 我将这句话再强调一下吧

~~objdump -d binary > binary.asm 然后直接手动把函数复制出来吧。demo里面本质上只是自动把函数切割,估计你的main名字被换了~~ 可以用ghidra的图形界面看看main变成什么名字了,在图形界面里面直接把ghidra反编译结果复制出来

1.基于ghidra/ida优化确实有可能反编译出不错的结果,但肯定需要大量人工介入,毕竟llm本身并不具备判断反编译结果对错的能力。llm本质上还是概率模型,看得足够多可能猜出来全局变量甚至宏定义,但需要针对多函数优化训练了。 2.最有效的方法还是增加训练长度。4096的限制并不是硬限制,模型本身支持16k的,推理数据长于4k也可以继续使用。只是训练数据截断成了4k减少计算消耗。