躲在这个吧没人会...吧 关注:64贴子:674
  • 4回复贴,共1
2014.12.17 昨天晚上注入失败。奇怪了,所有hoOK都恢复了啊。除了dbg函数,读写内存的两个函数,这个一恢复立马触发腾讯的一个驱动。重新被他hoOK。听人说只能写跳转绕开。注入后没有出现往常的提示,热键部分是有效的,多次使用程序奔溃。有一种猜想,和普通程序一样。我注入到了dnf另一个空壳进程了。由于加班回家时间已经比较晚了,今天晚上在弄吧。重点 ntset函数 功能EIP替换,maping函数,功能内存映射开辟空间,fire函数 开辟映毒奶粉应用程序程序内核空间,read函数 内存复制。今天重点解决空壳的毒奶粉进程。毒奶粉隐藏进程6个,tp,tgp,dug,sd,忘了。其实奶粉不停的调用这几个dll,给了我一些其他注入想法。暂停他们,同时替换它们EIP。让他们进入毒奶粉的时候顺便把我们带进去。


IP属地:浙江来自Android客户端1楼2014-12-17 06:43回复
    毒奶粉追封很霸气啊,昨天。每次毒奶粉全民奔放之前,都要小心一个问题。特征采集开始了,等采集够几千个特征后。就是新一轮的制裁开始。其实按照这个问题来看,那么上一次的特征也应该放开了不少。毕竟它还是要人玩的玩,必须照顾低配电脑。不能弄太多特征让一些低配玩家流失。
    唉,当初师傅在的时候没有抓把劲好好搞一下。时隔一年也联系不上了。技不如人,很多问题困扰来了。风哥自从有人开始破解他的辅助后也消失不做了。润秋大坑比也是挂个QQ不说话。现在奶粉问题一天堆一个,晚上又要加班真是没有什么时间弄。压力很大啊


    IP属地:浙江来自Android客户端2楼2014-12-17 07:20
    回复
      有人再说修改代码算什么功能,其实除了call,就只有hoOK功能了。修改代码也是一种hoOK,可能有人不明白。我做个示范就知道了。你释放了一个技能,触发了对应的技能call【每个技能都有自己独立的技能call,这里不是说的350技能call】,你修改基址的代码。使得这个call在内部的一个call,【这个来自于代码定位】。跳转到了别的call地方。这就是一个hoOK。或许修改代码不明显,不够透彻。我们可以在基址代码地方,把代码修改为一个技能基址。,这时候你发现我们触发基址,会使用代码被替换的技能基址。这样基址换基址的hoOK相信大家比较好理解了。
      想到姿势了吧,呵呵。基址替换基址在替换基址也是可行的哦。人物换人偶的。修改人偶超级技能,替换有惊喜。
      直接call人偶技能也是很好玩的。
      现在的call变得和一年前不一样了。以前大部分是push 压入参数,中规中矩的方法。现在是什么 mov xxx,xx
      call 内存地址
      或者mov xxx,xx
      call 【寄存器+偏移】
      或者 push xx
      Jmp 【内存地址】
      call → 假call 返回 真call的参数
      push eax
      call 内存地址。
      现在奇奇怪怪的call调用。还有些call被加密得不成样子了。只能从类似原型上判断了。其实我刚刚开始也很难理解为什么mov,也变成参数了。后面我进入call了了解了,他是把指针放在寄存器了。对应的esp来查找指针。这是易叔告诉我的 ,我们需要的数据不一定要压栈。只要传入内存地址也是可行的,只是这样就不好管理堆栈平衡了。要自己记住每一个指针内存地址。push是sp指针自动加1,自动分配一个地址给你保存寄存器内存地址值。它只是直接用了寄存器内存地址。这样稍有sp,和主程序不对应就崩溃,而你修复sp是无效的。挺狠的。
      push也是挺难理解的命令哦
      比如 push eax,1
      push ecx,2
      push edI,3
      这时候 eax为1,ecx为2,edI为3
      pop eax
      pop ecx
      pop edI
      这时候变成了 eax为3,ecx为2,edI为1
      也就是反过来了。不要去纠结为什么这样,只要知道是反向的赋值就行了。一切是sp作怪,sp一直在最底部造成的。你说一个水壶你是不是也是这样先灌开水进去,然后盖上盖子。你要喝水了,是不是先打开盖子


      IP属地:浙江来自Android客户端3楼2014-12-17 08:18
      回复
        先打开盖子再喝水,而不是直接喝水。sp也是这样,他把数据一个一个保护起来了你只能一个盖子一个盖子揭开它。当然push后,我们修改的eax,也可以eax变成esp+2,ecx对应esp+4。edI对应esp+6。
        放入堆栈中,我们同样可以随时修改寄存器的值,并不影响。只是要注意堆栈中esp当前值指向在retn前,用和call调用前一样。主程序的esp指向上一句的堆栈。call已经改变了它们,所以要改回去。要不下一个的寄存器乱套了。
        以上我对push的理解,或许有很多错误,未来某一天有人看见有人提出来我很感谢。


        IP属地:浙江来自Android客户端5楼2014-12-17 09:48
        收起回复