|
[原创]Google开了个开源项目.
没写明白干什么的啊 |
|
[原创]纯手工Divbrush-V1.8算号器及Java程序拆解过程
[QUOTE='XF[BCG];1199755']1、看了下,机器码应该是从这里传来的:jdMethod_if(); 分析下这个内容 2、注册是机器码加 yolan 字符串再MD5的吧? MessageDigest localMessageDigest = MessageDigest.getInstance("MD5&...[/QUOTE] 非常荣幸得到您的批评指正 前面两点说的都非常正确: 1. 机器码确实是由 jdMethod_if(); 算出来的,它的实现是这样: public String jdMethod_if() { DiskID localDiskID = new DiskID(); return DiskID.DiskID().toUpperCase(); } 其中DiskID这个类是在一个单独的DLL里面的,由于Divbrush程序是java做的,用C重写一遍会比较麻烦,所以我就偷懒了。 2. 第二条说的很对 3. 关于我说的“一个很明确的替换”也是偷懒了,其实字符串替换有两个地方,除了前面代码中显示出来的,还有一个是这一句: MessageDigest localMessageDigest = MessageDigest.getInstance("MD5"); localMessageDigest.update((str1 + "yolan").getBytes("UTF-8")); byte[] arrayOfByte = localMessageDigest.digest(); [B] k localk = new k(); String str2 = localk.a(arrayOfByte);[/B] str2 = str2.toUpperCase(); k这个类就是做字符串替换的: public class k { private static char[] a = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' }; public String a(byte[] paramArrayOfByte) { int i = paramArrayOfByte.length * 8; int j = i % 6; int k = 0; StringBuffer localStringBuffer = new StringBuffer(); while (k < i) { int m = k / 8; int n; switch (k % 8) { case 0: localStringBuffer.append(a[((paramArrayOfByte[m] & 0xFC) >> 2)]); break; case 2: localStringBuffer.append(a[(paramArrayOfByte[m] & 0x3F)]); break; case 4: if (m == paramArrayOfByte.length - 1) { localStringBuffer.append(a[((paramArrayOfByte[m] & 0xF) << 2 & 0x3F)]); } else { n = ((paramArrayOfByte[m] & 0xF) << 2 | (paramArrayOfByte[(m + 1)] & 0xC0) >> 6) & 0x3F; localStringBuffer.append(a[n]); } break; case 6: if (m == paramArrayOfByte.length - 1) { localStringBuffer.append(a[((paramArrayOfByte[m] & 0x3) << 4 & 0x3F)]); } else { n = ((paramArrayOfByte[m] & 0x3) << 4 | (paramArrayOfByte[(m + 1)] & 0xF0) >> 4) & 0x3F; localStringBuffer.append(a[n]); } break; case 1: case 3: case 5: } k += 6; } if (j == 2) localStringBuffer.append("=="); else if (j == 4) localStringBuffer.append("="); return localStringBuffer.toString(); } } |
|
|
|
[原创]Sublime_text注册码验证分析
是的,汇编程序通常把AL或EAX作为返回值,反AL设为1,相当与 return 1;或return true; |
|
[原创]急速破解sublime_text所有版本(2.xx/3.xx/Win/Linux/32/64)
非常感谢你的批评指正,分析64位确实费了些时间。 其实我的思路还是没变,用IDA分析64的程序也可以找到几乎固定的模式: 验证码校验函数包括很多的数值判断,而且考虑到兼容旧版本,我相信今后的版本中还会有现在的判断语句(只是可能变得更长)。 下面是我在IDA64里找到的判断语句,我认为把这一系列判断语句作为特征码会更安全。 下次我会把我写的程序公布出来。 |
|
[原创]急速破解sublime_text所有版本(2.xx/3.xx/Win/Linux/32/64)
是的,特征码非常明显。 但是这样做不太好吧,要是出了build 3048是不是要再找一遍特征码? 目前我的程序是在二进制文件中用正则式匹配出各判断语句,然后定位到函数的返回值。 |
|
[原创]Sublime_text注册码验证分析
多谢支持 我是在看到 Call sublime_.004CC450,然后接着是test al, al,想到这个函数的返回值可能比较有用。然后先是试着在内存中改al,后来是改sublime_.004CC450的返回值。 也是尝试了很长时间。 |
|
[原创]BD杀毒新版评测
BD难道不是BitDefender吗? |
|
[原创]学习破解的理由及计划。
不一定是黑客培训班,可以是正常的软件开发培训班。 在看雪上的大部分人其实是搞软件开发的,至少开发做的很多。 既然自己要独立了,那就再勇敢一些吧。 花钱报就业类的培训班也会得到父母和你姐姐的支持,比在家窝着强多了。 你可以继续研究一个月,关注点不要放在破解上。然后再回来考虑考虑这个建议。 ——走出家门,去交朋友吧。 |
|
[原创]学习破解的理由及计划。
花钱报个培训班吧,光看书不实践是不行的。其实很多课程不需要完全明白,很多知识是在实践中才慢慢领悟的。 这些课程你要是都能自学下来说明你的领悟能力极高,是这样吗? 考虑一下吧,不要一个人单干 |
|
[原创]急速破解sublime_text所有版本(2.xx/3.xx/Win/Linux/32/64)
sublime_text注册机已写成,在windows系统上可以破解32、64位的各个版本(st_v2xx, st_v3xx)。Linux上可用的注册机正在编写。 |
|
一段汇编代码求用DELPHI内联汇编实现
loop @@L1后ecx就突然变成0了,所以你的程序只能对第一个字符加密。 建议把loop那一句改为 dec ecx jnz @@L1 另外: lea esi, strtmp 也不妥,因为每次lods byte ptr [esi]之后,查看al的值并不是你期望的那个字符的asic码值! 再另外,mov ecx, 31这一句把字符串长度写死了。 下面是我的程序,请测试一下效果: procedure Encrypt(str:string); var len:Integer; begin len := Length(str) asm pushad cld; mov ecx, len mov esi, str mov edi, esi @@L1: lods byte ptr [esi] xor al, 7 stos byte ptr es:[edi] dec ecx jnz @@L1 popad end; end; |
|
代码求助!
_BYTE等价于unsigned char, 在windef.h里有这一句: typedef unsigned long DWORD; IDA翻译的时候是默认按VC的方式来翻译,但也有些差别。你自己适当的改一改程序,能编译过去就行。 |
|
[求助]帮忙算个题目啊!!!!!
[QUOTE=路边丶Drunk;1182839]内在地址 汇编指令 1000:0 mov ax,6 1000:2 call ax 1000:5 inc ax 1000:6 mov bp,sp add ax,[bp] 求ax 答案是000B 为什么?我感觉是5啊[/QUOTE] Call ax相当于jmp ax call ax前,把call ax下一句的地址保存在sp中(即5) 然后跳过去执行mov bp,sp. 这时ax等于6,sp中保存的是5 加起来就是B |
|
|
|
|
|
[求助]为什么 我发的帖子 都不回啊
看上去你很着急,是有很着急的活吗? 本人也是新手,但是建议你不要着急,先多学学文档(推荐看雪的论坛精华合集,可以到http://www.pediy.com/default.php找到)。然后用OD,IDA分析几个小程序看看。 然后再说。 |
|
[建议]咱们站主页右上角的进入论坛有问题?
我也很纳闷,貌似这个按钮链接错了 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值