能力值:
( LV2,RANK:10 )
|
-
-
2 楼
问题找到了,出在Includes/datas.asm中的 dq F1_ 语句(所有的都是),这个编译后理论上是F1_的绝对地址,但obj文件中是F1_与这一句的相对偏移 - 4,是不是goasm的bug?
然后我改成dq F1_ - $,结果编译后obj中此处为0,又是一个bug? 最后改成dd F1_ - $,就对了 为了改成与官方的shellcode二进制完全一致,改成了以下代码: dd F1_ - $, 0……所有地方都得改 加个0是为了与dq的8个字节一致:
方法1:改datas.asm
dd F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F3_ - $, 0, F6_ - $, 0, F5_ - $, 0, F5_ - $, 0, F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F3_ - $, 0, F6_ - $, 0, F5_ - $, 0, Esc_2byte - $, 0 dd F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F3_ - $, 0, F6_ - $, 0, F5_ - $, 0, F5_ - $, 0, F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F1_ - $, 0, F3_ - $, 0, F6_ - $, 0, F5_ - $, 0, F5_ - $, 0 …………#
方法2:改LDE64.asm和opcodes.asm 不改datas.asm,在LDE64.asm和opcodes.asm的全部call rax前添加 add rax, 4,一共12个地方,目的是弥补dq F1_少的那4个字节
最后于 2023-6-24 18:40
被glopen编辑
,原因:
|