破解一个加密函数的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了破解一个加密函数的方法相关的知识,希望对你有一定的参考价值。

是一个游戏程序,加密函数在一个dll里,这个dll非常关键,里面函数非常多。所以不容易被取代。我先发一个C++破解这个加密的思路。但代码我没有很明白。望解读。
DWORD l;
BYTE *p = (BYTE*)GetProcAddress(GetModuleHandle("me.dll"), "Encrypt");
VirtualProtect((void *)p, 0x200, PAGE_EXECUTE_READWRITE, &l);
*p = 0xe9;
*(DWORD *)(p + 1) = ((DWORD)dididi) - (DWORD)p - 5;
其实代码的意思我大概理解,就是取得这个dll的这个加密函数的首地址。把调用地址改成另外一个函数dididi,这是一个自己写的函数,写在一个dll里注入游戏进程。
我用VB使用GetProcAddress,取得首地址,但是发现这里并没有被修改。找不到e9。而找到的却是me.dll里的原始内容。说明这只是dll文件在内存里的地址。那么BYTE *p究竟代表什么意思呢。我不会用OD,请教如何使用它找到这个地址。
我的破解思路,希望是不用注入dll的方法。比如游戏程序要使用函数加密,那就把加密返回的基址,改成输入的参数基址。还有一个破解思路,是修改这个yb_mem.dll,它里面的函数是把输入参数加密,那么让它直接输出这个输入的值,也达到了破解目的。这只是想法,具体代码我也不知道怎么写。

楼主这个问题涉及到的是逆向工程, 已经不是程序语言的问题了.
第一句是取地址, 第二句是修改内存页的读写, 因为在内存中, 代码区是只读的, 这里改成可读可写. 第三句是将函数的第一句改成E9, 其实这里的E9对应的是汇编里的JMP, 配合第四句修改第二个字节的内容, 联合起来的效果就是该函数入口处的第一句成了JMP dididi(相对地址), 当调用这个函数时, 就会跳转到自己写的函数dididi里了.
这里有一个前提, dididi的函数定义(参数个数, 参数类型, 返回值类型)必须与函数Encrypt的完全一致.
你用VB取得首地址后修改失败是因为第三句*p的意思是修改p指针指向的字节的内容, 而VB中没有指针类型, 正确的做法应该是使用memset或者memcpy这两个API来对内存中的数据进行操作, 从而回避VB内没有指针的问题.
不知道上面说的这些你有没有看懂, 不过楼主想找一个懂VB, C++ 和 汇编的, 上百度知道的人来回答你的问题, 估计很困难.....
参考技术A 游戏的话,应该没你想的那么简单

如果那个函数是动态加密的,每次返回都不一样,你还是要分析函数才能实现你说的

更不用说,再加个壳,关键代码VM ,内存校验什么的

只能说 good luck , 祝你那函数就那么简单,啥保护都没,真这样的话,patch 几行代码就结束了。

exe加密视频破解

网上下载了一个视频
好像是天草的,很早的吧
看了一下天草现在啊都不做翻视频了。。
加的几个客服也都没做了。。。
现在这个算法不知道怎么破解呀,应该是蛮早的加密方法了。
希望能有人告知是什么加密方法如何破解?如图。
至少知道是用什么加密的呢。是哪个团队加密的呢?
加分求助。

参考技术A 谁能告诉一下,,,学习一下 参考技术B 没有找到破解方法追问

是用什么软件加密的呢?

追答

没用过 不是狂牛。。飓风 不晓得 是不是的。。百度视频加密软件 ,一个个加 哪个界面跟这个一样就是的了

追问

知道了,是天狼星6.3不知道谁有算法解开。

本回答被提问者采纳
参考技术C 什么视频?给我看看!

以上是关于破解一个加密函数的方法的主要内容,如果未能解决你的问题,请参考以下文章

exe加密视频破解

怎么破解加密WiFi?

linux shadow文件破解

MD5破解 有加密方法

如何破解DRM加密视频! 简单点的!录制不可以用视频打不开! 看个视频跟做任务是的,求高手! 成功可追分

施耐德plc程序加密怎么破解