-
Notifications
You must be signed in to change notification settings - Fork 445
Open
Description
问题描述
在使用 LLM4Decompile 对目标二进制中的函数进行反编译与优化时,部分函数的输出结果存在内容缺失或结构不完整的问题。
具体表现:函数体中关键逻辑被截断、无限声明变量等现象。
环境信息
大模型版本:llm4decompile-1.3b-v2
受硬件限制,暂无法使用 6.7B 或其他版本验证。
代码片段
vllm_kwargs = {
"model": self.config.model_path,
"dtype": torch.float16,
"gpu_memory_utilization": 0.9,
"max_model_len": 8192,
"trust_remote_code": True,
"max_num_seqs": 1,
}
llm = LLM(**vllm_kwargs)
sampling_params = SamplingParams(
temperature=0.0,
max_tokens=4048
)
outputs = llm.generate(batch_prompts, sampling_params)输入
// Function: FUN_00bb2e00
void FUN_00bb2e00(long param_1,undefined8 *param_2)
{
undefined4 uVar1;
long lVar2;
long lVar3;
undefined8 uVar4;
ushort uVar5;
int iVar6;
undefined8 uVar7;
long in_FS_OFFSET;
undefined8 local_58;
undefined8 uStack_50;
undefined8 local_48;
undefined4 local_40;
long local_30;
lVar2 = *(long *)(param_1 + -0x10);
local_30 = *(long *)(in_FS_OFFSET + 0x28);
iVar6 = FUN_01f876c0(*(long *)(param_1 + -8) + 0x68);
if (iVar6 != 0) {
if (param_2 == (undefined8 *)0x0) {
LAB_00bb2e5a:
FUN_00b96590(&DAT_02ea7e6c,0x575,"fnbamd_rad_dns_cb",1,"Failed in DNS resolving %s",
*(long *)(param_1 + -8) + 0x28);
}
else {
iVar6 = FUN_01f876c0(param_2);
if (iVar6 != 0) goto LAB_00bb2e5a;
uVar7 = FUN_01f87450(param_2);
FUN_00b96590(&DAT_02ea7e6c,0x579,"fnbamd_rad_dns_cb",4,"%s->%s",*(long *)(param_1 + -8) + 0x28
);
lVar3 = *(long *)(param_1 + -8);
uVar4 = param_2[1];
*(undefined8 *)(lVar3 + 0x68) = *param_2;
*(undefined8 *)(lVar3 + 0x70) = uVar4;
*(undefined8 *)(lVar3 + 0x78) = param_2[2];
uVar1 = *(undefined4 *)(param_2 + 3);
*(undefined4 *)(lVar3 + 0x80) = uVar1;
uVar5 = FUN_00b8fa10(*(undefined8 *)(param_1 + -8),0xbb2f20,uVar1,uVar7);
*(ushort *)(*(long *)(param_1 + -8) + 0x6a) = uVar5 << 8 | uVar5 >> 8;
iVar6 = FUN_00bb2af0(param_1 + -0x45e8);
if (iVar6 == 0) {
if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
FUN_00b974e0(param_1);
return;
}
goto LAB_00bb2ff8;
}
}
lVar3 = *(long *)(param_1 + -8);
FUN_01f87670(&local_58,0,0);
*(undefined8 *)(lVar3 + 0x68) = local_58;
*(undefined8 *)(lVar3 + 0x70) = uStack_50;
*(undefined8 *)(lVar3 + 0x78) = local_48;
*(undefined4 *)(lVar3 + 0x80) = local_40;
iVar6 = FUN_00b97500(param_1);
if (iVar6 == 0) {
*(undefined4 *)(lVar2 + 0x2cbb0 + (long)*(int *)(*(long *)(param_1 + -8) + 0x24) * 4) = 5;
if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
FUN_00b9e910(param_1 + -0x45e8);
return;
}
goto LAB_00bb2ff8;
}
FUN_00b96590(&DAT_02ea7e6c,0x588,"fnbamd_rad_dns_cb",4,"Wait for another DNS reply (%s:%s)",
*(long *)(param_1 + -8),*(long *)(param_1 + -8) + 0x28);
}
if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
return;
}
LAB_00bb2ff8:
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}输出
void FUN_00bb2e00(struct FIB_ENTRY *fib, struct FIB_ENTRY *nfib)
{
struct FIB_ENTRY *prev_fib = fib - 1;
struct FIB_ENTRY *prev_nfib = nfib - 1;
struct FIB_ENTRY *n_fib = fib - 1;
struct FIB_ENTRY *n_nfib = nfib - 1;
struct FIB_ENTRY *prev_n_fib = n_fib - 1;
struct FIB_ENTRY *prev_n_nfib = n_nfib - 1;
struct FIB_ENTRY *n_n_fib = n_fib - 1;
struct FIB_ENTRY *n_n_nfib = n_nfib - 1;
struct FIB_ENTRY *n_n_n_fib = n_n_fib - 1;
struct FIB_ENTRY *n_n_n_nfib = n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_fib = n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_nfib = n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_fib = n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_nfib = n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_fib = n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_nfib = n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_fib = n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_nfib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1;
struct FIB_ENTRY *n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib = n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_n_fib - 1期待给出相关的指导和建议,谢谢。
Metadata
Metadata
Assignees
Labels
No labels