<一> 摘要 software : anonmail 1.30 home page : http://www.pnutsoftware.com file name : reg_name : yupie reg_no : 11676 <二> 缘起 这也是一个"号称"能丢匿名信的e-mail程式,用它来开开玩笑是不错,可别以为真能完全匿 名,不信先寄封e-mail给你自己再用mail程式看看它的header吧?所有的资料都在上头!另 外有许多mail server好像根本就不准用telenet port 25来发信?其实一些功能强的e-ma il程式像becky mail也能做到相同的结果.未注册版无法改变你e-mail的header,注册版则 无限制. <叁> 执行情形 (1) 载入soft-ice後执行anonmail,选择tools/register,在name处填入yupie,regstration # 填入1122334455,Ctrl-d进入soft-ice後下bpx hmemcpy指令,按F5回到注册画面,按下OK, 马上进入soft-ice. (2) bd *,按F12共15次後出现错误画面. (3) 重覆1-2,这次按F12共14次,再来用F10去追. (4) 0137:0F05A5C5 RET 0008 0137:00419D45 MOV EAX,EBX 0137:00419D47 JGE EAX,EBX 在 0137:00419D9C MOV EDX,[EBP-1C] ..... [EBP-1C]出现1234567890 在 0137:00419DAD MOV EDX,[EBP-18] ..... [EBP-18]出现yupie 0137:00419DB0 LEA EDX,[EBP-20] 0137:00419DB3 MOV [EBP-18],EBX 0137:00419DB6 CALL EDI 0137:00419DB8 LEA ECX,[EBP-24] ..... 419DB8到419DBF是将reg_name, 0137:00419DBB LEA EDX,[EBP-20] reg_no存入堆叠中 0137:00419DBE PUSH ECX 0137:00419DBF PUSH EDX 0137:00419DC0 CALL 00414BF0 0137:00419FDD CALL [0041E238] ..... 至此出现错误讯息 从上面可推测比对点应该是在00419DC0到00419FDD间. (5) 重新再来一次,这次执行到00419DC0时,下"t"追下去看看 0137:00419DC0 CALL 00414BF0 ..... 下"t" 0137:00414BF0 PUSH EBP 0137:00414BF1 MOV EBP,ESP 一直到 0137:00414C30 MOV EAX,[EBX] ..... [EBX]为reg_name 0137:00414C90 CALL [0041ED20] 0137:00414C96 IMUL AX,AX,07 ..... EAX=79h,刚好是y的ascii code 0137:00414C9A JO 00414D9A 从00414C96到00414CAB正是在计 算 0137:00414CA0 MOVSX ECX,AX 注册码,将字母的ascii code乘7 放 0137:00414CA3 ADD ECX,EDI 入ECX,总合则是放入EDI 0137:00414CA5 JO 00414D9A 0137:00414CAB MOV EDI,ECX 0137:00414CAD LEA ECX,[EBP-2C] 0137:00414CB0 CALL [0041E360] 0137:00414CB6 LEA EDX,[EBP-4C] 0137:00414CB9 PUSH EDX 0137:00414CBA LEA EAX,[EBP-3C] 0137:00414CBD PUSH EAX 0137:00414CBE PUSH 02 0137:00414CC0 CALL [0041E1F0] 0137:00414CC6 ADD ESP,0C 0137:00414CC9 MOV EAX,00000001 0137:00414CCE ADD AX,SI 0137:00414CD1 JO 0414D9A 0137:00414CD7 MOV ESI,EAX 0137:00414CD9 JMP 00414C49 0137:00414CDE IMUL EDI,EDI,03 ..... 将EDI的值再乘以3 0137:00414CE1 JO 00414D9A 0137:00414CE7 MOV [EBP-28],EDI ..... 最後的结果放入[EBP-28] 0137:00419DF7 CMP DI,BX 0137:00419E10 JZ 419F9D ..... 若JUMP则出现失败讯息 到这里可以看到注册码的计算方式,将你的reg_name字母一个个转换成ascii code,乘以7 放入[EDI]中相加之总合再乘以3,很简单吧?在00414CE7处你可以下"? EDI"指令将结果抄 下,这就是你的注册码. (6) 重新打开arrow注册画面,填入yupie/11676完成注册. <四> 结论 这是我第一个找到编码方式的程式,当然我的运气很好,它的编码十分的简单很适合新手去 研究,美中不足的是无法抓出比对的核心,最出在找注册码时一直以为它是十位数,所以也 浪费了不少时间,因为注册画面中是可以输入十位数,或许这是个陷阱吧.美中不足的事未 能找到比对的核心处,我花了不少时间但还是投降了,如果有人找到比对的关键点欢迎来信, 这次为了了解整个编码的方式,我还K了一些组合语言挺有意思的,以前常听一些高手说搞 破解是为了"练功",现在觉得所言不假.