打印

为了对付**,我也想了很多方法

[复制链接]
楼主: hotpower
手机看帖
扫描二维码
随时随地手机跟帖
21
qihao| | 2007-11-16 21:06 | 只看该作者 回帖奖励 |倒序浏览

这个Hotpower 真是一个好 啊!

一个小偷的存在,让大家费这么多脑浆! 本来该法律来做的事情。

试试一个带OS 的二进制代码如何?哈哈哈

使用特权

评论回复
22
IceAge| | 2007-11-16 21:34 | 只看该作者

hotpower, 别激动

程序在虚拟机中模拟运行,不是在反汇编。反汇编是运行完之后进行的。

"如果协议中无此命令,而中断服务程序有,并设置了非法的入口地址.
那么整个串口中断服务程序对吗???还继续强行编译吗???" ----- 不会,因为虚拟计算机不会运行。

我看了你的代码,首先说明:你的所有针对反汇编程序的花招对于虚拟机无效,因为程序在仿真 **运行**, 不会被 JZ, reti 骗过。再看看对付虚拟机的部分:
 

在此加入系统初始化语句
;以下三句解读DPTR的指针TESTDATA
    CLR   A
    JZ    $+3;肯定运行NOP;MOV   DPTR,#TESTDATA
    DW    1200H;低8位为NOP指令
;-------------------------------------------------------------------;
;虚拟机不晕???
;CODEDATAPROTECT子程序里明确告诉有指令LJMP 55AAH
;怎么现在却变成取数据55AAH了???
;-------------------------------------------------------------------;
    MOV   DPTR,#TESTDATA;取出被保护的数据,让虚拟机产生矛盾
    MOVC  A,@A+DPTR


虚拟机绝不会晕,你的程序如何在目标机中运行,那么同样会在虚拟机中运行。最终走过的地址都是代码。

51 与 pc 最大的不同是 pc 的代码在 ram 里运行,因而花招更多,比如代码覆盖,代码变形,使得目标代码不唯一, 这才是对付虚拟机 + 反汇编的有效武器。而且做一个mcu 虚拟机比想象中的容易很多,我以前是用 8086 汇编模拟 mcu,非常简单。

使用特权

评论回复
23
qihao| | 2007-11-16 21:44 | 只看该作者

IceAge 都干些什么东西哦! 晕死

使用特权

评论回复
24
hotpower|  楼主 | 2007-11-16 22:00 | 只看该作者

IceAge老师,俺非常感谢有您和我探讨这个晕的问题~~~

程序(机器代码)在虚拟机中模拟运行,不是在反汇编。反汇编(清单即结果)是运行完之后进行的。

这句话俺赞同.

反汇编实际就是运行结果通过路径连接代码集合的清单.

但是的但是---这份清单是又正常汇编的机器码通过在虚拟机中模拟运行后
             (每个分支无指令歧义)所得到的清单.

不是的不是---根据下面连接通过在虚拟机中模拟运行后每个分支由于歧义
             是得不到按汇编规则得不到一份清单的.
             除非很多份清单.

注: 俺做的超级反汇编就是在虚拟机中模拟运行,运行完之后得到的清单.
    正常代码都逃不过它,如果变量名称知道后,反汇编的清单将比汇编者
    自己书写的还要整齐~~~


相关链接:https://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2757509

使用特权

评论回复
25
pheavecn| | 2007-11-16 22:01 | 只看该作者

加壳与脱壳。

由于加入了超高强度的加解密算法,用虚拟机运行,如果没有注册码,也得不到真实运行的代码(运算量太大);
如果有注册码,也只能得到对应于这个注册码的代码。
其他注册码的可能不同。
对于纯粹在flash rom中运行的程序,应该没有办法阻止反向工程。
freescale的单片机可以在ram运行程序,应该比较方便hotpower老兄发挥。

使用特权

评论回复
26
hotpower|  楼主 | 2007-11-16 22:03 | 只看该作者

pheavecn也没理解俺~~~俺不是阻止,俺是"阻看"

使用特权

评论回复
27
qihao| | 2007-11-16 22:11 | 只看该作者

"阻看" 唉

即使就是点一个灯,我也用OS,还开3个线程来点!气死hotpower

使用特权

评论回复
28
xwj| | 2007-11-16 22:17 | 只看该作者

一个线程负责亮,一个线程负责灭,还有个线程负责玩,气

使用特权

评论回复
29
AIRWILL| | 2007-11-16 22:19 | 只看该作者

非常高兴看到 hotpower 拿出箱子底的东西出来

事实上, 对付动态(仿真)跟踪, 51 的系统可能确实很难

使用特权

评论回复
30
hotpower|  楼主 | 2007-11-16 22:26 | 只看该作者

回qihao同志:你的OS开一万个线程都一样~~~扒光~~~

俺知关心那几个LED即可灭了你的灯~~~

使用特权

评论回复
31
hotpower|  楼主 | 2007-11-16 22:28 | 只看该作者

C/C++/OS编译后的代码和汇编都一样---下了澡堂都一样~~~

使用特权

评论回复
32
IceAge| | 2007-11-16 22:32 | 只看该作者

qihao 严肃点,我们在抢劫呢

OS 的二进制代码其实也没关系,很多时候我们只关心重要的部分,比如算法,程序结构部分通常会忽略掉

pheavecn:
超高强度的加解密算法对代码加解密,只适用 pc 之类的ram 中运行的代码。而且,如果有心**的话,只需找到解密入口即可,往往改动一个byte (jne --〉je) ,就行了。

阻看,确实有些头痛,hotpower 的那些代码的确不容易看,不过,还是那句话:很多时候我们只关心重要的部分,比如算法,程序结构部分通常会忽略掉。那些头痛的代码不看也罢

使用特权

评论回复
33
tage| | 2007-11-16 22:34 | 只看该作者

IceAge

说的对,对于OTP FLASH 等单片机是无法对付虚拟机的,这么做只能迷惑人。超安全处理器DS5002就是用RAM做加密程序存储器的。

使用特权

评论回复
34
tage| | 2007-11-16 22:36 | 只看该作者

看来IceAge也是

一小 CRACK

使用特权

评论回复
35
xwj| | 2007-11-16 22:38 | 只看该作者

再加入我的绝招,我看你怎么跑虚拟机

关键代码,引入各种环境影响、时间交互差异,送入CPU智能卡实时交互运算,限定交互时...

我看你怎么跑虚拟机!

使用特权

评论回复
36
IceAge| | 2007-11-16 22:45 | 只看该作者

xwj:你的这些方法早有人试过了

比如软件狗。其实只要监控记录 实时交互运算 的交换数据,做一个模拟器,就能轻松**。当然有时可能要分析数据,以免被骗。看看那些游戏外挂吧。

使用特权

评论回复
37
hotpower|  楼主 | 2007-11-16 22:46 | 只看该作者

IceAge这就对了~~~俺已说过,现在俺发的只是入门提高版

真正关心的是协议和算法~~~

这部分没人的介入肯定是不行的,所以"阻眼"是最最关键的,而"阻脑"也要把
人像下图一样~~~

所以我说逆向工程是很"伟大的"~~~因为没有毅力是肯定不行的~~~

采用我这些"初级教程"估计一般的人会投降的~~~

不过像老师这样的高手肯定100%的**...

使用特权

评论回复
38
hotpower|  楼主 | 2007-11-16 22:54 | 只看该作者

IceAge老师说得不错,俺加一句---所有规矩的代码都将"灭亡"

因为它太"守法"~~~俺这"不法之徒干"的是"违法"的事情.

所以"违法的虚拟机"是对付不了"非法的代码"~~~

一个分支有2个路径----"闭上眼睛我是谁"???

规矩的代码就不可能出现这个问题~~~

使用特权

评论回复
39
qihao| | 2007-11-16 23:00 | 只看该作者

踢场子来了---继续点灯:

94  引入外部环境---坛子正说用AD结果来产生随机数呢!用随机数来互斥、把偷看的人的脑浆搞成浆糊。   菜农喜欢玩脑浆的!  

不过偏离 菜农的“阻看”题目了。  


不过好像有点接近伪命题了:可以被复制的二进制代码,“阻看”的目的究竟有多大呢。  


只是周伯通这样的家伙玩的命题。

IceAge 说的很有道理。

使用特权

评论回复
40
xwj| | 2007-11-16 23:01 | 只看该作者

IceAge ,随便搞个什么小小算法,就可以让你不可能从数据破

适当控制数据流量和运算强度,就可以让你根本得不到足够的样本数据!


就好像破译无线网卡的WEP密码,只要抓足够的包就能**,
但我不上网或偶尔上一下,你就会没一点辙的:-)

使用特权

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

本版积分规则