求DNA加密相关背景。。。

  • 精钢魔像
    猜测是设计模式里的适配器模式,oo技术里封装的一种

    winapi
    MessageBox(...);

    dna api
    DNAMessageBox()
    {
    ....各种检测光盘的手段
    MessageBox(...);
    }

    大概可能也许是这个样子吧
  • 正版万岁
    DNA跟游戏引擎代码相关

    游戏过程中不断发出检验请求

    能进游戏你不一定能通关
  • A
    Adebayor
    这次孢子没用dna加密吧
  • 精钢魔像
    没错,那代码就是这个意思

    理论上,多态和运行时类型判断可以让开发人员都不知道自己调用的哪个api是加了光盘保护的,甚至是哪种保护

    强大的oo,只有想不到,没有做不到
  • 酒多是我爹
    这个
  • s
    shinjikun
    这东西必须选用及其健壮的加密算法才行
    不然除错的时候“多态和运行时类型判断可以让开发人员都不知道自己调用的哪个api是导致错误的,甚至是哪种保护导致错误的”
  • T
    TCTF
    那DQ5ds的防拷系统是不是和这个类似?
  • 酒多是我爹
    不一样,dq5只是通过检测特定地址的arm代码来对比溢出检测
  • 酒多是我爹
    Z卡上~ROM是直接通过DS内置BIOS内的初始化代码载入到内存中的~而在烧录卡上~ROM的载入则始终是靠烧录卡的模拟完成~尽管现在技术已经模拟的很牛×了~但是注定还是出现了一个人们平时压根不会注意到的纰漏~那就是Secure Area~

    The Secure Area is located in ROM at 4000h..7FFFh, it can contain normal program code and data, however, it can be used only for ARM9 boot code, it cannot be used for ARM7 boot code, icon/title, filesystem, or other data.

    以上这段是在GBATEK中对Secure Area的解释~大致意思是说~这是一段被定义在ROM偏移量4000h..7FFFh处的区域~用作存放ARM9的启动代码~
    这里要特别注意这段话的最后一句~这段区域绝对不能为ARM7启动代码~图标标题~文件~或者其他任何数据~……意思是说~放在ROM这个地方的数据是仅仅能被DS的BIOS在开机载入时访问的~其他任何时候都无法访问该区域~
    这点在通常情况都会被人们给忽视掉~因为从来没有游戏或者程序将数据写入该区域并在主程序中试图访问该区域~……因此~也从来没有烧录卡为该区域写验证模拟~
    那么如果说真的有游戏无聊到在程序中试图访问该段地址会得到什么样的结果呢?~用NO$GBA测试后~结果是无论读取的是8000h前的任何地址的数据~最终返回的必然是以8000h为开头的200字节(ROM访问以200字节为单位)~……

    相信说到这里~看懂了的人已经能猜到这次娴熟的SE所玩弄的手腕了吧~

    DQ5的烧录检测程序~依次访问0000h,0200h,0400h,8000h,8200h,8400h这6个地址~然后对输出的200字节取特征码~……根据前面的理论~如果使用的是Z版卡的话~这里将出现的结果是0000h,0200h,0400h,8000h得到的结果全部一致~而8200h,8400h则顺利读取到其他数值~
    但是由于前面也说到~没有任何烧录有设计过该段区域的溢出检测~事实上就连IDEAS都没有该检测~所以在烧录卡上运行的结果便会是这6个值全部不同~(因为烧录卡允许游戏读取ROM的Secure Area~)……

    因此~只要这里依次查看这6个输出值~就能很清楚的检测出玩家是在使用烧录还是用Z卡了~……
  • 陈永仁
    -_- 地球5比这个差太多了
  • H
    HyperIris
    你说得这个叫掩耳盗铃。

    代码被编译器处理后是另一个样子,多态?在汇编中虚函数也只是普通的函数而已,对crack没有任何影响。