首页
社区
课程
招聘
[分享]编译反汇编引擎LDE64源代码
2023-5-20 18:38 11462

[分享]编译反汇编引擎LDE64源代码

2023-5-20 18:38
11462

LDE64源代码:https://github.com/BeaEngine/lde64

在VS2010下,添加LDE64.ASM

LDE64.ASM的编译选择:Custom Build Tool ->
GoAsm /fo $(IntDir)%(fileName).obj /x64 %(fileName).asm
$(IntDir)%(fileName).obj;

修改了LDE64.ASM一行:_LDE@16: 改成: LDE,就编译通过了,不然会显示:
1>testLDE64.obj : error LNK2001: unresolved external symbol LDE
1>H:\testLDE64-64\x64\Debug\testLDE64.exe : fatal error LNK1120: 1 unresolved externals

不过调试跟踪时,还是会出问题。
作者源代码里的readme写的是:

Building ?

Building process is not available because not yet really clean.

意思是这个版本不正确?

最后放上测试工程(vs2010)


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2023-6-24 19:27 被glopen编辑 ,原因:
上传的附件:
收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 516
活跃值: (4469)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
glopen 2023-6-24 14:13
2
0

问题找到了,出在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编辑 ,原因:
游客
登录 | 注册 方可回帖
返回