-
-
未解决
[求助]动态库做简单修改后,出现加载动态库失败。代码贴上,有奖问答。
50.00雪花
-
发表于:
2021-4-11 17:04
3744
-
未解决 [求助]动态库做简单修改后,出现加载动态库失败。代码贴上,有奖问答。
50.00雪花
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函数装载动态库,就在装载的时候,应该是检测了动态库的特征码,如果不是原始库,就拒绝装载。不知道各位遇到过这类问题没有。
命名没有变更,肯定是一样的。修改后文件修改时间跟原来不一样了。
请各遇到类似问题的大神给予指点。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!