首页
社区
课程
招聘
这个自校验应该怎么弄啊,谢谢大神看下!
发表于: 2013-6-4 02:09 12560

这个自校验应该怎么弄啊,谢谢大神看下!

2013-6-4 02:09
12560
收藏
免费 0
支持
分享
最新回复 (30)
雪    币: 4200
活跃值: (4178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
  做逆向看代码说话,至少代码不会说谎.由其是绑硬件那段.因为它是写死的,而人是活的,人会用脑子说话.就这么简单.

我不否认可以有方法脱壳,毕竟只是XOR 一个DWORD 就算跑也可以跑出来.    我共享了分析过程,你除了会说,你共享了方法没? 就知道这个不行那个不行.  只知道索取.知识是共享的  你要得到一个东西,首先你就得把你脱壳的经验发给大家学习  这才是硬道理.  不然你除了索取没有其它.  至少到现在我和你不同,我是在真正的交流.

    中途不止我一个说过没有密码不知道怎么去找解码...  这正是共享知识的时候.你愿意分享,我们才愿意交流.

作者为什么搞密码.个人推测是这样.  一台机器编译一份死的机器码固定在里面.而不是说用注册码来注册,也许每一个人的密码也设置得不一样
2013-6-6 14:25
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
国外有一篇讲解这个壳的原理的,不是脱壳机

好吧,Mxixihaha    我承认我忽略了你所说的脱壳方法,但我真心不是只要求别人帮忙,自己不说方法,我现在去找到哪篇国外的文章在线翻译一下。
2013-6-6 14:30
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
刚想到一个东西,这个贴子本来就是请教大神如何解决闪退,后来才说到这个程序是先被脱了壳的,有人要没脱过的我才传上来的,最后才发生了这些事,算了不讲了,一会儿越描越黑了,算是我的不对,我接着去翻译哪个文章去~
2013-6-6 14:55
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
下面是国外这篇文章在线翻译的,虽说在线翻译效果不好,但也能看得懂~

OllyDbg的运行程序和调试,那么SendMessage API断点挂在输入密码
当调试是可能的。

0x00409190消息SendMessage WM_GETTEXT的目标程序输入一个字符串在编辑
来。下,直接的,0x004091D8调用一个函数,该函数的返回值,操作时继续0x693126CB
所得款项。
0x004091D8看看上面的函数的内部。

字符串旋转移位的原始数据会丢失,因为解码几乎是不可能的。
以下退出功能再次跳忽略语法。
跳转忽略[EDI +402 A3E增加1,[EDI 402927]的EndDialog函数被调用的语法。
如果输入的密码相匹配的一部分[EDI +402 A3E] 1增加拆包操作已经开始告知假设
可以。
因此,调试,硬件断点将继续挂起。
0x004090A8部分比较目标程序。

[EBP +402 A3E]([EDI +402 A3E])是零,除非执行下面的语句。
在函数内部分析0x00409200

再次呼吁0x004091DA功能摆在首位从里面去寻找相同的行为,看到0x004091D8。
在这种方式来创建哈希码的0x0040921F〜0x00409231内存解密操作的部分所得款项,。
但是解密操作,使用XOR操作,XOR是生成一个值,XOR,ROL,ROR的过程中,经过复杂
制成。
如上所述,这是不可能解密。
然而,我们可以使用的快捷方式,异或XOR运算到一定值时,得到的值为0,则与原来一样的
使用它。
源代码是加密存储的程序部分。
大部分的购买程序代码段中的填充与NULL。
因此,加密存储的最后一部分可能[NULL XOR的hashCode]假设创建进程
是。
但是,由于不同的hash code之前,先继续解码过程没有学会如何发生
有必要。
在加密过程可以表示简述如下。

Memory = Memory ^ EAX
CL = AL
EBX = ROL(EBX, CL)
EAX = EAX ^ EBX
CL = BH
EAX = ROR(EAX, CL)
EBX = EBX + EAX

如果您反转加密过程的运作可以识别解码过程。

EBX = EBX - EAX
EAX = ROL(EAX, BH)
EAX = EAX ^ EBX
EBX = ROR(EBX, AL)

阅读后面的目标程序可以知道什么EAX。
但是,因为你可以不知道EBX的小蛮力应该看看。
在目标程序中区0x00401000〜0x00405000是加密部分。
这读取4个字节从后面带来两倍。
0x00404FFC:0x75DE81C0
0x00404FF8:0xCD5E6523
EBX,当应用到的解码处理的数量可以得到。
除部分和EBX不需要改变自己的方式。
EBX = 0xCD5E6523 ^ ROL(0x75DE81C0,BH)
BH为0x00〜0xFF到一个字节,所以把它全部看起来符合BH如果EBX要求。
BH = 0X10,EBX = 0xA993C21F
BH = 0x62,EBX = 0x43448C44
BH = 0xB2而EBX = 0x394BF64B
你可以找到一个共有三个EBX。
所有三种情况下解密的最后阶段haebomyeon可以找到合适的EBX。
0xA993C21F - > EAX:0xE0E0BAAE
0x43448C44 - > EAX:0xDAD4B6C7
0x394BF64B - > EAX:0xA1AA0B94
上面的第三部分的末尾和EBX比较0x00404FF4存储器可以看到,0x43448C44一直。
EAX和EBX的最后一部分,现在,你有现在的九个解密加密存储,只需拆开包装的两端。
PE密码恢复IAT后自动解码,而不必写一个单独的答复,因为调试器
OllyDump插件可以很容易地解压
上传的附件:
2013-6-6 15:32
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
Mxixihaha  你技术好,虽然是在线翻译的,我相信你也能看懂了,
现在问你个题外问题     绑定机器信息校验,和 我说的自校验  这两种之间的差别是什么,有无简单的判定方法?

因为我运行程序就闪退,看网上所有的教程,和别人的方法都是下闪退断点,然后JMP ,我这样做了,程序能运行不闪退,功能也能用,只是不完美,所以根本就没发现有机器信息的东西,这个怎么判断出来的呢?
2013-6-6 15:44
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
我居然看完了。。。
2013-6-6 21:24
0
游客
登录 | 注册 方可回帖
返回
//