反汇编调用了MFC42的程序是否可行?
MFC42.DLL是使用ordinal来定位的,内部函数没有名字,无法使用INC文件进行显式调用
但是可以使用invoke GetProcAddress,hDLL,1 来获得函数地址
获得地址以后PUSH一些参数,直接CALL就可以了.
回到原来的问题,用IDA还原出一个程序以后,发现调用了MFC42.DLL
sub_401A76 proc near
jmp ds:MFC42_1576
sub_401A76 endp
这里的MFC42_1576就是一个变量
MFC42_1576 dd ?
直接调用invoke GetProcAddress,hDLL,1576,然后 mov MFC42_1576 ,eax 应该就可以了吧?
请高手指点江山,这个还是一个想法,还没测试过,欢迎大家测试讨论指点
问题点数:0、回复次数:5Top
1 楼linjianing()回复于 2004-11-03 20:21:23 得分 0
我的意思是把代码修改一下,重新生成EXE文件
如果可行,就可以自己增加很多原来程序没有的功能了Top
2 楼clumsy(Kyrie eleison)回复于 2004-11-03 21:44:57 得分 0
你有这个的源程序吗? 没有的话, 估计反编译之后, 做些修改, 再重新生成 exe 的话, 比较的困难. 有的话, 不是 汇编 的吧, 应该是 vc 的, 那里应该不直接触及 mfc42 的, 只是些类的使用Top
3 楼cchuocp(井底之蛙)回复于 2004-11-03 22:26:04 得分 0
IDA反汇编出来的东西,看懂了,打打小补丁还行。要增加功能,重新编译,不大可能吧!Top
4 楼bauhaus()回复于 2004-11-04 09:03:08 得分 0
ida对于mfc的类和函数的分析很多时候
都是错的
不信你可以自己写一个程序反过来看看
Top
5 楼linjianing()回复于 2004-11-04 10:34:49 得分 0
我没有程序代码,但是我也不要深入MFC42,我只要能找到程序入口点就好了
能让汇编程序调用MFC42就好了,因为没有INC文件无法重建IMPORT表
,是否自己建一个IMPORT表?Top




