Changing parts of compiled binaries

别说谁变了你拦得住时间么 提交于 2019-12-25 01:49:13

问题


learned english as a second lang, sorry for the mistakes & awkwardness

I have given a peculiar project to work on. The company has lost the source code for the app, and I have to make changes to it. Now, reverse engineering the whole thing is impossible for one man, its just too huge, however patching individual functions would be feasible, since the changes are not that monumental.

So, one possible solution would be compiling C code and somehow -after rewriting addresses- patching it into the actual binary, ideally, replacing the code the CALL instruction jumps to, or inserting a JMP to my code.

Is there any way to accomplish this using MingW32? If it is, can you provide a simple example? I'm also interested in books which could help me accomplishing the task.

Thanks for your help


回答1:


I use OllyDBG for this kind of things. It allows you to see the disassembly and debug it, you can place breakpoints etc, and you can also edit the binary. So, you could edit the PE header of that program adding a code section with your (compiled) code inside, then call it from the original program.
I can't give you any advice since I've never tried, although I thought about it many times. You know, lazyness.. :)




回答2:


I would disassemble the program with a high-quality disassembler that produces something that can be assembled back into a runnable app, and then replace the parts you need to modify with C code.




回答3:


Something like this will let you reverse the machine code into source. It won't be pretty but it does work.

http://www.hex-rays.com/idapro/

There are also tools for runtime patching http://www.dyninst.org/ for instance. They really aren't made for patching but they can do the trick.

And of course the last choice is to just use an assembler and write machine code :)



来源:https://stackoverflow.com/questions/5059930/changing-parts-of-compiled-binaries

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!