吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 706|回复: 9
收起左侧

[已解决] dll挂载跳转问题求解

[复制链接]
zhuayi112 发表于 2023-7-12 10:03
本帖最后由 zhuayi112 于 2023-9-21 10:47 编辑

QQ截图20230712094733.png
一个PE某位置如上图。在地址 0057C46F 位置 添加几句汇编代码。想法如下跳转到pe一段空白位置:
地址:        汇编代码
0057C46F   jmp   677777                                 跳转到PE空白位置
0057C476   push esi
...
...
00677777  cmp dword ptr ds:[ecx + 8] , 555    空白位置添加代码
                  jne 677788
                  mov  [内地地址] , ds:[ebx+14]
00677788  cmp dword ptr ds:[ecx+8],199               
00677792 jmp  0057C476                                在跳转回去                                         


上面的代码可以在pe空白位置完成。现在不想在pe里改来改去,想用dll来实现
想法是pe挂载dll,然后修改0057C46F,跳到dll某个位置实现这段代码 ,然后在跳到0057C476,(已知可以在dll里修改jmp 跳转)现在问题有几点疑惑?
不知道怎么获取这个dll某个位置地址, 然后是不是内嵌汇编方式操作代码,最后在跳转回去。
这里很疑惑求有经验的大佬帮指点指点,非常感谢。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

JuncoJet 发表于 2023-7-12 10:08
WriteProcessMemory 修改shellcode就行
OD里面是怎么样的字节码,你就改什么样的字节码
 楼主| zhuayi112 发表于 2023-7-12 10:10
JuncoJet 发表于 2023-7-12 10:08
WriteProcessMemory 修改shellcode就行
OD里面是怎么样的字节码,你就改什么样的字节码

嗯 WriteProcessMemory,修改位置懂,现在遇到的问题是,跳转到dll里的地址怎么回去?这里是用fun的地址还是 fun中 某一段的地址
void  fun()
{
__asm{

}
}
是这样?
JuncoJet 发表于 2023-7-12 10:15
zhuayi112 发表于 2023-7-12 10:10
嗯 WriteProcessMemory,修改位置懂,现在遇到的问题是,跳转到dll里的地址怎么回去?这里是用fun的地址 ...

jmp 不会返回(需要返回的用call),
fun的约定比较重要 _cdecl 无所谓,_stdcall 得注意平衡
用哪个地址无所谓,不重要,哪个方便用哪个
 楼主| zhuayi112 发表于 2023-7-12 10:25
JuncoJet 发表于 2023-7-12 10:15
jmp 不会返回(需要返回的用call),
fun的约定比较重要 _cdecl 无所谓,_stdcall 得注意平衡
用哪个地 ...

大大的意思有点明白了,jmp到fun里,然后fun里执行了
00677777  cmp dword ptr ds:[ecx + 8] , 555    空白位置添加代码
                  jne 677788
                  mov  [内地地址] , ds:[ebx+14]
00677788  cmp dword ptr ds:[ecx+8],199  
不需要在jmp回去,相当于call了是吗?
可是我这个fun是 void fun() ,能获取到 ebx+14 局部变量内容吗?不是很理解了,难道要把esp指针传进来吗?
哈哈大大能简单写下吗?
yes2 发表于 2023-7-12 10:56
你是想通过注入dll来实现对吧?修改0057C46F位置为jmp的指令可以在dll里实现,加载的时候获取目标PE的基址+偏移可以确定要写入jmp的地址。再根据你dll中的实现函数来计算jmp的偏移。
fun函数建议使用naked裸函数实现,你jmp过来到裸函数的话,是可以直接读取ebx+14这些寄存器现场的。如果是64位的可能就要手写asm文件
 楼主| zhuayi112 发表于 2023-7-12 11:08
下面是fun简单实现的代码
QQ截图20230712110449.png

下面是刚实现的图,发现几个问题
第一 jmp 跳转到 fun 地址后 ret到未知区域。
所以只能使用 call 了。但是 call 执行了后,
cmp dword ptr ds:[ecx+8],199 已经失效了,在fun里面
QQ图片20230712110328.png

fun 汇编内容
QQ截图20230712110733.png
 楼主| zhuayi112 发表于 2023-7-12 11:10
yes2 发表于 2023-7-12 10:56
你是想通过注入dll来实现对吧?修改0057C46F位置为jmp的指令可以在dll里实现,加载的时候获取目标PE的基址+ ...

naked裸函数 我试试大大说的这方法。主要这里有个cmp 比较
yes2 发表于 2023-7-12 11:32
可以直接jmp fun函数,只需要在naked函数里用内联汇编jmp回来就行。事实上naked函数似乎也不支持return

免费评分

参与人数 1吾爱币 +1 收起 理由
zhuayi112 + 1 谢谢@Thanks!

查看全部评分

 楼主| zhuayi112 发表于 2023-7-12 11:48
yes2 发表于 2023-7-12 11:32
可以直接jmp fun函数,只需要在naked函数里用内联汇编jmp回来就行。事实上naked函数似乎也不支持return

感谢感谢,这方法可行。jmp到 fun地址 然后在 内联汇编 中jmp回去。

第一个方法估计也是可以,可能要复杂点。 这naked方法比较符合我的想法。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-11 02:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表