请问高手:目前的逆向工程技术,能不能发现我的可执行程序里面的数学函数是什么?(里面有具体说明)

ADAMAND 2011-02-16 10:25:38
比如,我在源程序里面有一个数学函数,甚至包含更加复杂的过程调用,编译成可执行程序。如果有人拿到这个可执行程序,他通过逆向工程,能不能发现这个函数?
我的目的是想在我的程序里面,通过数学函数+系统调用等,把口令、密码等进行变换,所以不想被人发现这个变换函数是什么。

请高手指教,谢谢啦!
...全文
153 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zephyr_23 2011-03-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 adamand 的回复:]
告诉大家我的最终目的吧。

对于对称体制的密码学技术,一直存在必须要可信的第三方的机构存在才能够交换会话密钥的问题。 而第三方机构是否可信赖本身又是个用户不得不接受的问题(如果第三方机构是美国人的,中国人能够始终信任它吗?另外,第三方机构的费用肯定使得通信成本上升) 即使采用公钥技术交换会话密钥,也仍然会用到第三方机构,因为公钥的管理机构本身又是个可信的第三方机构。 总之一句话,保密通信在当前……
[/Quote]
你是想做版权吧?再好的算法总是有漏洞的,就你那个算法,有两个漏洞
1、感觉你的算法和以前机器狗差不多,但后然就出现了软件模拟的机器狗,所以现在中国盗版很猖狂...你应该想办法通过网络让动态验证,
2、“首先发送方对接收方进行身份确认” 问题不就又来了么?
ADAMAND 2011-02-18
  • 打赏
  • 举报
回复
感谢各位大侠回复!
gbb21 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 adamand 的回复:]

告诉大家我的最终目的吧。

对于对称体制的密码学技术,一直存在必须要可信的第三方的机构存在才能够交换会话密钥的问题。 而第三方机构是否可信赖本身又是个用户不得不接受的问题(如果第三方机构是美国人的,中国人能够始终信任它吗?另外,第三方机构的费用肯定使得通信成本上升) 即使采用公钥技术交换会话密钥,也仍然会用到第三方机构,因为公钥的管理机构本身又是个可信的第三方机构。 总之一句话,保密通信在当……
[/Quote]
为什么不用非对称加密呢?
zhanshen2891 2011-02-17
  • 打赏
  • 举报
回复
当然可以了,不过首先他得先分析你是怎么做的,然后才能下一步,就是说:现在你发的帖子如果被破解的人看见了,那么他就容易多了。其实最困难的就是第一步。
arong1234 2011-02-17
  • 打赏
  • 举报
回复
觉得lz想搞密码学是好的,但是不要沉迷在空想中。你推出一个新的方法,必须有理论证明才行,不能用你手工计算的复杂度来考虑你密码的强度,你要证明在数学上它很安全才行。你这种所谓“逆向工程无法解”实际没有什么意义,首先你懂逆向工程再说吧[Quote=引用 8 楼 adamand 的回复:]
告诉大家我的最终目的吧。

对于对称体制的密码学技术,一直存在必须要可信的第三方的机构存在才能够交换会话密钥的问题。 而第三方机构是否可信赖本身又是个用户不得不接受的问题(如果第三方机构是美国人的,中国人能够始终信任它吗?另外,第三方机构的费用肯定使得通信成本上升) 即使采用公钥技术交换会话密钥,也仍然会用到第三方机构,因为公钥的管理机构本身又是个可信的第三方机构。 总之一句话,保密通信在当前……
[/Quote]
赵4老师 2011-02-17
  • 打赏
  • 举报
回复
用IDAPro反汇编一下你的exe看看不就知道了?
另外
奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!
ADAMAND 2011-02-17
  • 打赏
  • 举报
回复
告诉大家我的最终目的吧。

对于对称体制的密码学技术,一直存在必须要可信的第三方的机构存在才能够交换会话密钥的问题。 而第三方机构是否可信赖本身又是个用户不得不接受的问题(如果第三方机构是美国人的,中国人能够始终信任它吗?另外,第三方机构的费用肯定使得通信成本上升) 即使采用公钥技术交换会话密钥,也仍然会用到第三方机构,因为公钥的管理机构本身又是个可信的第三方机构。 总之一句话,保密通信在当前的技术下,必须依赖第三方机构的存在,比如KDC,PKI。

如果通信双方不需要交换密钥,那么就不需要依赖第三方机构了。

所以我想设计一个不需要交换密钥的保密通信方式,大致思路是:
仍然采用对称加密体系,但是把密文嵌在程序里面,密钥隐含在程序里面。
首先发送方对接收方进行身份确认,然后要求接收方把 接收方机器的特征的HASH值 发送给发送方;发送方编写程序, 把这个HASH值进行数学变换后作为密钥;这个程序内嵌了DES或者别的加密算法,对消息进行加密后附在程序里面。编译程序,发送给接收方。这样,程序里面没有密钥,只有对HASH值的数学变换作为隐含的密钥,还有加密算法以及密文。

接收方收到程序后,执行程序;程序会读取机器特征并且做HASH以及对这个HASH值做数学变换,得到密钥,接着进行解密,得到明文。

如果有人窃取了这个程序,那么由于机器特征不符,而且无法伪造,所以程序就不会正常运行或者不会给出正确结果。

这是我的初步想法。

后来,我反复思索,感觉除了确认身份这步可能有问题之外,还存在一个严重的问题,就是:窃听者首先截获HASH值以及程序,然后通过逆向工程技术修改程序,跳过读取机器特征和计算HASH的步骤,直接把HASH值代入那个数学变换函数即可得到密钥,接下去就顺理成章地得到正确的明文了。

不知道有没有什么好办法可以克服这个问题?

有感兴趣的兄弟,如果你有逆向工程的经验,或者搞过密码学,可以来信给我:adam_ldq75@hotmail.com.
















FancyMouse 2011-02-17
  • 打赏
  • 举报
回复
看数学函数容易得很。发现函数的话就算不逆向工程也能做得到。
mstlq 2011-02-16
  • 打赏
  • 举报
回复
楼主确实有洁癖的话,建议用这招吧
http://www.cppblog.com/sleepwom/archive/2010/05/26/116372.html
以前我遇到过有洁癖的客户,用了这个他才放心
ADAMAND 2011-02-16
  • 打赏
  • 举报
回复
看到这么快就有兄弟们回复,非常高兴!

其实我关注的仅仅是逆向工程(即采用反汇编跟踪等技术研究和修改可执行程序的功能)的当前状况,能不能做到判断程序里面的函数是什么?这个比做某个软件的破解版时跳过一段程序要难,因为你要识别出我这个程序里面有个数学函数比如f(x)=x^2 mod 2011。我这个函数的返回结果要用在别的地方,你想仅仅跳过是不行的,否则程序输出结果是不对的。而如果你能识别出这个函数,你就可以直接把结果代入后面引用它的地方了。
arong1234 2011-02-16
  • 打赏
  • 举报
回复
密码学是公开的技术,很多技术即使知道哪个函数怎么写也不可能解密,因此lz不必要这么麻烦
bluesky12312388 2011-02-16
  • 打赏
  • 举报
回复
矛和盾是相互的,将程序逻辑和加密结合起来,可以做到高保护性,
这方面比较有代表性的是RAR的密码保护

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧