打印

他横由他横,明月照大江---蒙特卡洛法之天下有贼

[复制链接]
5010|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IceAge|  楼主 | 2007-11-14 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
除非偷不到,否则不会天下无贼。把藏钱的箱子锁再严密,也无济于事。

蒙特卡洛法:把某个未知值取作某种概率分布或者概率过程的未知参量,然后根据无作为标本抽出法对它进行统计、推定的一种方法。举个简单的例子,求不规则形状的面积,向包含不规则形状的矩形区域内投掷小球,假设 N 次中有 m 次小球在不规则形状中,矩形面积为R, 如果 N 足够大,则不规则形状的面积为:
      (m / N)* R

蒙特卡洛法用于反汇编中,可以用来推断程序中不确定的出入口,而不必关心真真假假虚虚实实的迷宫,其原理是让程序模拟运行,随机给出输入状态,只要时间足够长(比如若干天),那么几乎所有可能的程序出入口都走过。 一旦有了程序跳转出入口表,可以得到完整的反汇编程序。 

相关帖子

沙发
洪七公| | 2007-11-14 21:45 | 只看该作者

哈哈~~~海盗来了.快跑~~~

使用特权

评论回复
板凳
洪七公| | 2007-11-14 21:55 | 只看该作者

菜农让俺代话给他的老师IceAge帮忙先把这个中难度的反出来

他说上课是就没好好听老师讲课,所以胡作非为惯了,反出来才认服输.

他将源码献上,有老师参考着也好做逆向工程,这样方便些.

注解很详细并附一些(中难度)欺骗术,他是这样关心老师的.怕老师头晕.

他给的出口都很明显,高难度的就不会这么简单了,到那时老师别累过了即可.
相关链接:http://www.**/blog/hotpower/59678/message.aspx

使用特权

评论回复
地板
hq_y| | 2007-11-14 22:12 | 只看该作者

哈哈~~~~~~~~快来看高手PK啊~~~~~~~~

使用特权

评论回复
5
fsaok| | 2007-11-14 22:48 | 只看该作者

不一定

比如某段程序要你输入一个密码才会去运行,你不知道密码,即使你运行多少天也运行不到那个语句,

或者这段程序是要外部电路的某个时序,这个时序你一定能模拟出来?

使用特权

评论回复
6
IceAge|  楼主 | 2007-11-14 23:06 | 只看该作者

对我不利的一面是,我现在只能提出原理,

我没有动力和精力去写一个真正的反汇编程序,除非有很高的悬赏。

我看了你的 “阻止反汇编软件汇编演示程序(中难度版)“,对于蒙特卡洛法没有任何意义,就像把不规则形状弄成迷宫,不会对面积求解有影响。无论如何,程序都要在cpu里正常运行,那么纪录运行轨迹也不会受到迷宫的影响。


使用特权

评论回复
7
IceAge|  楼主 | 2007-11-14 23:14 | 只看该作者

To: fsaok

我不知道你**过密码没有,pc 下最常用的**密码的方法是爆破---暴力**。理论上,只要时间足够长,密码可以用随机数**。

另外,不需要模拟外部电路的某个时序,用随机的输入即可,因为我们需要的不是正确的输出,而是可能的运行轨迹。

使用特权

评论回复
8
洪七公| | 2007-11-14 23:28 | 只看该作者

IceAge老师这实际是根本破不了的~~~

我指的"破"字是你不可能写出人所需要且能看懂的代码.
并非**程序.
因为HEX文件本来就是拿来就可以运行的.

你可以在keil C51上进行源码调试,运行期间反汇编窗口的代码部分在变化!!!~~~
不信你试试~~~

这说明了什么呢???

这就是我开玩笑的"上男下女他(她)是谁"~~~

使用特权

评论回复
9
洪七公| | 2007-11-14 23:52 | 只看该作者

IceAge老师:依菜农的歪理学说,在PC上也可做到"天下无贼"~~~

现在PC界编程序都太老实了~~~

菜农常叹息...如果都依据菜农的邪道,...

哈哈~~~俺玩什么都要付费用了,所以俺不愿公开~~~

使用特权

评论回复
10
dadodo| | 2007-11-15 00:08 | 只看该作者

PC上还没见过"天下无贼"

使用特权

评论回复
11
IceAge|  楼主 | 2007-11-15 00:15 | 只看该作者

呵呵,洪老前辈

pc 下的反**手段可是花样百出,现在PC界编程序都太老实了,不是因为程序员变傻了,而是网络大行其道,没必要在单机版的程序上花费毫无疑义的反跟踪防**等无用功了。就算 microsoft 的正版验证又能怎样。 

"你可以在keil C51上进行源码调试,运行期间反汇编窗口的代码部分在变化", 这个例子不能说明什么,C51只是做了简单的代码翻译,并没有刻意区分数据和代码。


可以断言:没有任何手段能够挡住反汇编的终极武器 ---------  人的大脑 



使用特权

评论回复
12
洪七公| | 2007-11-15 01:13 | 只看该作者

IceAge老师上课讲的原理菜农的超级反汇编全用上了~~~

方法实际大同小异,不过最后又人脑来决定入口.

菜农的超级反汇编大概如下:

1.采用循环扫描方式.
扫描表初始化只有1个0x0000.
从扫描表取出一个待扫描的地址(首次为0000H),遇到合法的分枝语句暂做停止,并标记将要跳入的合法地址.
且装入待扫描表中.

若遇到无条件跳转语句本次扫描结束.
扫描经过的单元填入扫描代码的序号(0为数据,1为操作码,2为操作数1,3为操作数2)

重复以上操作,得到第1次扫描.

这里的"合法"最重要.
每次扫描如果遇到:分枝跳入序号>=2或越界的都将视为非法.
如跳入已经扫描过的指令的操作数
分枝语句步长不对,如JZ    $+3;(二次扫描后才能确定) 
非法是将放弃这次的全部扫描.

2.根据中断向量表进行选择扫描
用户可根据感觉填入.
重复1.

3.根据散转表进行选择扫描
自动或人为干预.
重复1.

4.根据扫描表进行选择扫描
人为干预.
重复1.

5.生成反汇编代码
  扫描代码的序号为0的反汇编为DB数据
  和DPTR有关的标号.
  同时产生扫描文件.

6.根据人脑判断
  做出响应改动.重新反汇编.

大致介绍到这.当然要复杂很多,基本不需人管.

菜农的这些设计绝对不可能出现常用反汇编软件反汇编后不能再编译的怪现象!!!

因为菜农的设计是: 

即使一句都反汇编不出来,那好吧,俺全反汇编成DB XXH你总不能说俺玩赖吧~~~

哈哈~~~菜农以来不管什么理论,俺通过再汇编才算数,哪怕它全看不懂.

使用特权

评论回复
13
yewuyi| | 2007-11-15 08:49 | 只看该作者

看看热闹……

对于绝大多数想**程序的人来说,只是需要得到HEX文件,去改的可能很小……

使用特权

评论回复
14
fsaok| | 2007-11-15 08:59 | 只看该作者

歧路亡羊

蒙特卡洛法,可能得到很多出入口,乃至全部,不过,不知道是否会因为入口太多而歧路亡羊呢?

使用特权

评论回复
15
xwj| | 2007-11-15 09:04 | 只看该作者

LS 正解,IceAge 把迷宫程序想的太简单了

对于真真假假虚虚实实的程序,
并不是说简单的找到入口或出口就行了的,
过程、交互运算同样重要

使用特权

评论回复
16
HotPower| | 2007-11-15 09:34 | 只看该作者

...

使用特权

评论回复
17
IceAge|  楼主 | 2007-11-15 21:19 | 只看该作者

To fsaok and xwj

"可能得到很多出入口,乃至全部" , 没错,只要得到了入口,就能得到正确的代码,对于反汇编程序来说,过程、交互运算并不重要,那是 *人* 的事情。

使用特权

评论回复
18
hotpower| | 2007-11-15 21:31 | 只看该作者

哈哈~~~老师俺又加了那么一点点难度请主刀吧~~~

使用特权

评论回复
19
hotpower| | 2007-11-15 21:46 | 只看该作者

菜农真心地呼吁...

估计人们在这方法下得工夫太少,才有今天"逆向工程"的市场~~~

不要总因为世上的什么定义,推论及方法能**一切,使人们放下自我保护的意识.

如果采用高位的CRC运算,估计没什么人能够**出来.

因为密码是有时限的,只要它在时限内不被**,它都将成为成功的密码~~~

郁闷之极~~~为何我的邮箱里每月都有这样的逆向请求呢???

难道我们不深思一下吗???

难道每个逆向工作者都是高水平的吗???

不会因为他们简单的搜索就把我们都版权篡改了吗???

俺没事做了吗???俺是真心的呼吁大家要知道保护自己的合法权益和果实.

就到这里吧...

使用特权

评论回复
20
yewuyi| | 2007-11-16 08:47 | 只看该作者

有没有C版的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

325

帖子

4

粉丝