首页
论坛
课程
招聘
未解决 [求助]动态库做简单修改后,出现加载动态库失败。代码贴上,有奖问答。 50.00元
2021-4-11 17:04 1691

未解决 [求助]动态库做简单修改后,出现加载动态库失败。代码贴上,有奖问答。 50.00元

2021-4-11 17:04
1691

vc的动态库仅仅修改了一个指令
jbe 对应的机器码 修改为 jmp
我确定指令修改后并没有改变文件的长度。源代码如下
100031B7 83C4 04 add esp, 4
100031BA 3D C3EF3301 cmp eax, 133EFC3
100031BF 0F86 95000000 jbe 1000325A ; 这里做了修改
100031C5 6A 06 push 6
100031C7 8D4424 38 lea eax, dword ptr [esp+38]
100031CB 68 24130310 push 10031324 ; ASCII "100888"
100031D0 50 push eax
100031D1 E8 6AEE0100 call 10022040
100031D6 83C4 0C add esp, 0C
100031D9 85C0 test eax, eax
100031DB ^ 74 AB je short 10003188
100031DD 6A 06 push 6

 

——————————————————分割线————————————
ollydbg装载启动后,右键汇编填充,键入jmp后,点击汇编
100031BF 0F86 95000000 jbe 1000325A
————————————————————————————————————————————————
100031BF /E9 96000000 jmp 1000325A 上述黑体部分变成这样。用自己的程序调用里面的函数,结果都正常了。
但是,放到客户真正的运行环境中,会出现加载动态库失败的错误。
因为客户软件太老了,新设备识别码不对,让软件直接跳过识别码部分。我的猜测是:客户软件在运行的时候,好像会通过loadlibray函数装载动态库,就在装载的时候,应该是检测了动态库的特征码,如果不是原始库,就拒绝装载。不知道各位遇到过这类问题没有。
命名没有变更,肯定是一样的。修改后文件修改时间跟原来不一样了。
请各遇到类似问题的大神给予指点。


第五届安全开发者峰会(SDC 2021)议题征集正式开启!

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 990
活跃值: 活跃值 (909)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
爱我佳鑫 活跃值 2021-4-11 20:58
2
0
我觉得可能是识别码参数不对导致退出, 想要跳过识别码可不知能只修改一处还得给识别码赋值写死。你最好好好调调看看出错在哪。
雪    币: 550
活跃值: 活跃值 (659)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sonyps 活跃值 2021-4-11 23:13
3
0

修复重定向,这里包含一个绝对地址,你如果改后的代码没有引用这个地址,应该在重定位节中重置对本条指令进行重定位修复那条记录,如果搞不定或者不明白我说什么可以QQ联系我帮你修复。

最后于 2021-4-11 23:18 被sonyps编辑 ,原因:
雪    币: 1812
活跃值: 活跃值 (308)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
拍拖 活跃值 2 2021-4-12 13:32
4
0
100031BF:处指令看起来修改前修改后指令长度不一样,你 应该选择自动补齐。用NOP指令填充剩余长度,确保指令修改前后长度不变。 0F86 95000000 和  E9 96000000  
雪    币: 1985
活跃值: 活跃值 (679)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
yegu 活跃值 2021-4-12 14:49
5
0
lz搞完了吗?
雪    币: 1619
活跃值: 活跃值 (127)
能力值: ( LV8,RANK:123 )
在线值:
发帖
回帖
粉丝
DickBoomSky 活跃值 2021-5-7 19:03
6
0
程序是不是开了重定向,可以考虑把你修改的dll重定向关掉试试。用StudPE改很简单
游客
登录 | 注册 方可回帖
返回