Myanmar IT Resource Forum
Myanmar IT Resource Forum
Myanmar IT Resource Forum

You are not connected. Please login or register

View previous topic View next topic Go down  Message [Page 1 of 1]

1Kengen Me by Andy [Guide] Empty Kengen Me by Andy [Guide] 3rd October 2009, 1:58 pm

sHa92

sHa92
Founder



Founder
Andy ဆုိတဲ့သူတစ္ေယာက္ေရးထားတာဘဲ။ က်ေနာ္လည္း သူငယ္ခ်င္းတစ္ေယာက္ဆီကရတာ။
Crack လုပ္ရတာေတာ့ လြယ္တယ္။
Autoit compiler နဲ႔ Compile လုပ္ထားတယ္ဆုိေတာ့ သူက upx နဲ႔ Pack လုပ္ထားပါတယ္။ Autoit Compiler ရဲ႕ Default Packer ပါ။
က်ေနာ္ တင္ေပးထားတဲ့ Cracker Guide ကိုဖတ္ၿပီးေတာ့ စမ္းၾကည့္ၾကပါ။

Code:
http://ifile.it/4tw6hga

A simple KeygenMe written in AutoIt3.
You must find a valid username and key.
Good luck.

Difficulty: 1 - Very easy, for newbies
Platform: Windows
Language: Unspecified/other

Published: 11. Sep, 2009

http://www.myanmaritresource.info

2Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 7th October 2009, 6:40 pm

sHa92

sHa92
Founder



Founder
ဘယ္သူမွ မေၿဖၾကဘူးထင္တယ္။
က်ေနာ္ေတာ့ ေၿဖၿပီးသြားၿပီ။
က်ေနာ္ ေရးထားတဲ့ Keygen ေလးကို တင္ေပးလုိက္ပါတယ္။

Code:
http://ifile.it/msodu09

http://www.myanmaritresource.info

3Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 25th October 2009, 11:58 am

rhythm

rhythm
VIP Member



VIP Member
ဘယ္လိုေျဖသြားတယ္ဆိုတာကို တင္ေပးရင္ ပိုေကာင္းမယ္ထင္တယ္။ ဗဟုသုတ ရတာေပါ့။

http://myanmarcrackingteam.blog.com

4Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 26th October 2009, 9:59 am

tardin

tardin
MITR New User



အခု တစ္ေလာ ifile က ADSL လိုင္းမွာ ေၾကာင္ေနတယ္.. ေဒါင္းလို ့ကို မရဘူး

ညစ္ပါတယ္ ဗ်ာ

5Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 2nd November 2009, 3:55 pm

rhythm

rhythm
VIP Member



VIP Member
AutoIt ရဲ
သေဘာကေတာ့ Crackme.au3 ကို Crackme.exe အဴဖစ္ေဴပာင္းလဲေပးပ
တယ္။
ဒီ့ေနာက္မႀာေတာ့ UPX 3.03 နဲ
pack လုပ္ပတယ္။


ေဳကာင့္
AutoIt နဲ
ေရးထားတဲ့ ပရိုဂရမ္ကို crack လုပ္ေတာ့မယ္ဆိုရင္
AutoIt Decompiler .exe to .au3 ကို သံုးဴပီး Crackme.au3 script ကို ရယူရပ
မယ္။
ဒီနည္းနဲ
crack လုပ္တာကေတာ့ အဆင္ေဴပဆံုးပပဲ။


တကယ္ေတာ့ AutoIt က Crackme.au3 ကို
Crackme.exe အဴဖစ္ build လုပ္ေပးလိုက္ခ
ိန္မႀာ
compile လုပ္ထားတဲ့ Crackme.a3x ကို Crackme.exe မႀာ overlay (တခ
တည္းတၾဲေပးလိုက္ပတယ္)
လုပ္ေပးလိုက္ပ
တယ္။ ဒေဳကာင့္
Olly ကိုအသံုးဴပႂဴပီး Crackme.exe ဖိုင္ကို unpack လုပ္ခ
ိန္မႀာ
Olly က Overlay လုပ္ထားတဲ့ Crackme.a3x ကို dump လုပ္ေပးႎိုင္ဴခင္းမရႀိပ
ဘူး။
ေဳကာင့္ dump(unpack) လုပ္ထားတဲ့
Crackme.exe ရဲ
ဖိုင္အဆံုးမႀာ overlay ဖိုင္ကို ကူးထည့္ေပးရပမယ္။
ဒီလိုလုပ္ဖို
ရာအတၾက္ Hex editor တစ္ခုခုကို အသံုးဴပႂရမႀာဴဖစ္ပတယ္။
Overlay ဖိုင္ကို မကူးထည့္ေပးဘူးဆိုရင္ေတာ့ "Unable to open the script
file" ဆိုတဲ့ error box တက္လာမႀာဴဖစ္ပ
တယ္။


Crackme.exe ဖိုင္ကို crack လုပ္ဖို
Olly နဲ
ဖၾင့္တဲ့အခမႀာ
က႗န္ေတာ္တုိ
တၾဲေပးလိုက္တဲ့ overlay ဖိုင္ ပလာမႀာ
မဟုတ္ပ
ဘူး။ (ဆိုလိုတာက overlay ဖိုင္ကို
RAM ေပ
မကူးတင္ပဘူး)။
ေဳကာင့္ Crackme.exe က Crackme.a3x
(Overlay ဖိုင္) ကိုဖတ္ႎိုင္ဖို
CreateFile (ရႀိဴပီးသားဖိုင္ကိုဖတ္ရန္
ဖၾင့္ဴခင္း)၊ ReadFile (စာလံုးမ
ားကိုဖတ္ဴခင္း) API ေတၾကို အသံုးဴပႂပတယ္။


Register လုပ္ဖို
ေပ
ေစတဲ့ dialog ကိုေတာ့
CreateWindowExW API ကို အသံုးဴပႂပ
တယ္။ (W ဆိုတာကေတာ့ ယူနီကုဒ္စာလံုးကို
အသံုးဴပႂမယ္လို
ေဴပာတာပ။)
Edit text box ထဲရိုက္ထည့္တဲ့ စာလံုးေတၾ (User name နဲ

key) အတၾက္ GetWindowTextW API ကို အသံုးဴပႂတာဴဖစ္ပ
တယ္။ ဒေဳကာင့္
သင့္အေနနဲ
ဒီပရိုဂရမ္ရဲ
serial ကိုရႀာမယ္ဆိုရင္ GetWindowTextW API မႀာ breakpoint သတ္မႀတ္ဴပီး ရႀာတာ အဴမန္ဆံုးဴဖစ္ပ
လိမ့္မယ္။


အဳကံဴပႂလိုတာကေတာ့ သင့္မႀာ AutoIt
Decompiler .exe to .au3 မရႀိခဲ့ဘူးဆိုရင္ AutoIT နဲ

compile လုပ္ထားတဲ့ script ေတၾကို ဳကံႂခဲ့မယ္ဆိုရင္ serial ရႀာမယ့္အစား crack လုပ္တာက
ပိုဴမန္မႀာဴဖစ္ပ
တယ္။


ဥပမာ
-



0040FDB6 CALL DWORD PTR
DS:[<&KERNEL32.CompareStringW>]



0040FDBC TEST EAX,EAX


0040FDBE JE CrackMe_.0042A56E


0040FDC4 POP EDI


0040FDC5 ADD EAX,-2


ဒီဥပမာကိုဳကည့္လိုက္ရင္ ပထမဆံုး EAX တန္ဖိုး
သုညဴဖစ္မဴဖစ္စစ္ပ
တယ္။ သုညဴဖစ္ရင္ error တက္တာဴဖစ္တဲ့အတၾက္
JE ကို စဥ္းစားစရာမလိုပ
ဘူး။ ADD EAX, -2 ဟာ စိတ္၀င္စားဖို
ေကာင္းပ
တယ္။ မႀတ္ထားရမႀာက API function ေတၾဟာ
သူတို
ရဲ return
value ကို EAX မႀာ သိမ္းဆည္းပ
တယ္။ ဒေဳကာင့္
ADD EAX, -2 အစား MOV AL,0 ဆိုရင္ က႗န္ေတာ္တို
ရဲ
ပရိုဂရမ္ဟာ register ဴဖစ္ပ
ဴပီ။ ဘာေဳကာင့္လဲဆိုေတာ့ string ႎႀစ္ခုဟာ
တန္ဖိုးညီခဲ့ရင္ CompareStringW က return တန္ဖိုးအဴဖစ္ 2 ကို EAX ထဲမႀာ သိမ္းဆည္းမႀာမို
လို
(ဒ
ကလဲ သင္ရိုက္ထည့္လိုက္တဲ့ user
name နဲ
key ရဲ
length တူညီမႀသာ ဴဖစ္ပ
တယ္။ မတူညီခဲ့ရင္ေတာ့
CompareStringW API ဆီေရာက္လာမႀာ မဟုတ္ပ
ဘူး။)




Code:
ALPHA WIN unicode font နဲ႕ ျပန္ျပင္ဖတ္ပါ။

http://myanmarcrackingteam.blog.com

6Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 3rd November 2009, 3:18 pm

sHa92

sHa92
Founder



Founder
ေအာ္ အစ္ကိုက ေရးၿပီးသြားၿပီလား။
က်ေနာ္လည္း ဒီေန႔အားတာနဲ႔ ေရးလာခဲ့ပါတယ္။
နည္းနည္းေလာက္ ဖတ္ေပးေပါ့။ မွားခဲ့ရင္လည္း ခြင့္လႊတ္ပါ။


Cracker: $ƴǩǾ [http://syko92.wordpress.com]
::xxxxxx=|:::::::RCE::::::::::>

CrackMe ကို ခရက္လုပ္သြားပံု အဆင့္ဆင့္အား က်ေနာ့္ဆရာ ကို rhythm က ေရးေပးပါဆုိလို႔ ေရးေပးလိုက္ပါတယ္။ (တကယ္ဆုိ ကို rhythm က က်ေနာ္တို႔ကို ေရးေပးရမွာ။ က်ေနာ္က ခရက္သာလုပ္တတ္တာ ၊ ၿပန္မရွင္းတတ္ဘူး။ အခုေတာ့ ဆရာက ေရးခုိင္းေတာ့လည္း တပည့္ေလးက လုပ္ေပးရတာေပါ့။ Smile )

တစ္ခုေတာ့ ၾကိဳေၿပာခ်င္ပါတယ္။ က်ေနာ္ Crack လုပ္ရင္ အၿမဲ ကေမာက္ကမပါ။ တစ္ခါမွ နည္းမွန္လမ္းမွန္ မရဖူးဘူး။ (တစ္ခါတစ္ေလဆုိ အဆင့္ေတြ ဟုိေက်ာ္ဒီေက်ာ္နဲ႔လည္း ခရက္လုိ႔ရသြားတတ္တယ္)
အဲဒါေၾကာင့္ အခုက်ေနာ္ ေရးၿပတဲ့အခါ လိုအပ္ခ်က္ေတြရိွႏိုင္ပါတယ္။ ၿပီးေတာ့ အခု က်ေနာ္ ခရက္လုပ္ရတဲ့ေကာင္က AutoIT Script နဲ႔ ေရးထားေတာ့ တစ္ခါမွမလုပ္ဖူးေတာ့ စလုပ္တုန္းကဆုိ သူ႔ Code ေတြနဲ႔တင္ ေတာ္ေတာ္တုိင္ပတ္ခဲ့ရပါေသးတယ္။ အခုလည္း ၿပန္ေရးၿပလိုက္ပါဆုိလို႔သာ ၿပန္ေရးၿပရတာ။ ေရးေနရင္းနဲ႔ Coding ကို ၿပန္ၾကည့္ၿပီး ကိုယ့္ဟာကိုယ္ မူးသြားတာ ဘယ္ႏွခါရိွမွန္းမသိဘူး။ Smile Smile

လုိအပ္တာေတြရိွရင္လည္း ေၿပာပါခင္ဗ်ာ။ က်ေနာ္ကေတာ့ keygen ကို (--က်ေနာ္ မၾကိဳက္ေပမယ့္လည္း ခုထိ သံုးေနရတဲ့--)VB.NET နဲ႔ဘဲေရးထားတာပါ။
ၿပီးေတာ့ အၿခားသူမ်ား ေလ့လာလို႔ရေအာင္လည္း keygen အတြက္ AutoIT နဲ႔ ၿပန္ေရးထားတဲ့ Code ကို ပါထည့္ေပးလိုက္ပါတယ္။ အဲဒီ့ Code ကို ေရးသားသူကေတာ့ deurus ဆုိတဲ့သူၿဖစ္ပါတယ္။
က်ေနာ္ အခု CrackMe ကို Crack လုပ္တုန္းက သူ႔ရဲ႕ အကူအညီေတြ အမ်ားၾကီးပါပါတယ္။ AutoIt နဲ႔ ေရးထားတဲ့ ဟာေတြကို သူရွင္းၿပေပးတာပါ။
သူရွင္းတုန္းကေတာ့ နားလည္တယ္။ ခုေတာ့ ရေတာ့ဘူး။ Smile

***ထပ္ေၿပာမယ္ေနာ္။ က်ေနာ္ရွင္းတာမွာ လိုအပ္တာေတြ မွားေနတာေတြရွိရင္ ခြင့္လြႊတ္ပါ။ ဘီဂင္နာေလးမို႔ ခြင့္လြႊတ္ေပးပါ။ လိုအပ္တာရိွရင္ ၿဖည့္သြားလိုက္ပါ။***

အခု Program ကို စၿပီးေတာ့ Crack လုပ္ပါမယ္။

လုိအပ္တဲ့ Tools ေတြကေတာ့ : myExe2Aut နဲ႔ AutoIt3 Decompiler [http://www.nerdbucket.com/mirrors/myAutToExe2_2_AutoIt3_Decompiler_opensource.zip] တုိ႔ၿဖစ္ပါတယ္။
--------------------------------------

Program ကို PEiD နဲ႔ ဖြင့္ၾကည့္တဲ့အခါ UPX နဲ႔ Pack လုပ္ထားတာေတြ႔ရပါမယ္။ UNPACK လုပ္လိုက္ပါ။ (Unpack လုပ္နည္းကို ကို rhythm ေရးထားတဲ့ Cracker Guide 2.0 မွာ ဖတ္ႏႈိင္ပါတယ္။)

AutoIT နဲ႔ ေရးထားတယ္ဆုိတာကိုေတာ့ အေပၚမွာ က်ေနာ္ေဖာ္ၿပၿပီးပါၿပီ။
အဲဒီ့အတြက္ က်ေနာ္တုိ႔အေနနဲ႔ AutoIT script ေတြကို အနည္းငယ္ ေလ့လာဖို႔လိုပါတယ္။ (က်ေနာ့္တုန္းကလည္း နည္းနည္းေတာ့ ဖတ္လုိက္ရတယ္။ အခုေတာ့ ေမ့ေတ့ေတ့ Razz Razz)

အဲဒီ့အတြက္ သူ႔အေၾကာင္းက်ေနာ္တို႔ google မွာ ရွာၿပီးေတာ့ အနည္းငယ္ေတာ့ ေလ့လာရပါမယ္။
ေနာက္တစ္ခုအေနနဲ႔ လိုအပ္တဲ့ Tool တစ္ခုၿဖစ္တဲ့ myExe2Aut ဆုိတဲ့ Tool ကိုရွာလိုက္ပါ။

အဲဒါေတြရွာၿပီးၿပီ ၊ ကိုယ္တုိင္လည္း AutoIT Language နဲ႔ အနည္းငယ္ ရင္းႏွီးၿပီဆုိရင္ေတာ့ က်ေနာ္တုိ႔ စတင္ၿပီး ခရက္လုပ္ပါေတာ့မယ္။

--------------------------------------
ေအာက္မွာကေတာ့ serial ကို စစ္ေပးတဲ့ Function ၿဖစ္ပါတယ္။ အဲဒါမ်ိဳးကို ေတြ႔ေအာင္ရွာပါ။
ေတြ႔ရင္ေတာ့ ေအာက္မွာ က်ေနာ္ေၿပာတဲ့အတုိင္း ေလ့လာရင္ေလ့လာပါ။ မဟုတ္ရင္လည္း ကိုယ့္ဟာကိုယ္ၾကည့္ရင္ေတာင္ Programming အေၿခခံရိွတာနဲ႔တင္ နားလည္မွာပါ။
က်ေနာ္ကေတာ့ အေသးစိတ္မရွင္းၿပထားေတာ့ဘူးေနာ္။
--------------------------------------

Func CHECKKEY($USER, $PASS)
Local $OPKEY = "", $SIG = ""
Local $USER_LEN = StringLen($USER)
Local $PASS_LEN = StringLen($PASS)

If $USER_LEN < $PASS_LEN Then <= UserName က Password ထက္ နည္းေနရင္ Error တက္ပါမယ္။
MsgBox(0, "ERROR", "Invalid username or key.")
Exit
ElseIf $USER_LEN < 4 Then <= UserName ေနရာမွာ char ၄ လုံးမရိွရင္ Error တက္ပါမယ္။
MsgBox(0, "ERROR", "Invalid username or key.")
Exit
EndIf

$PASS_INT = Int($USER_LEN / $PASS_LEN)
$PASS_MOD = Mod($USER_LEN, $PASS_LEN)
$OPKEY = _STRINGREPEAT($PASS, $PASS_INT) & StringLeft($PASS, $PASS_MOD)

For $INDEX = 1 To $USER_LEN
$SIG &= Chr(BitXOR(Asc(StringMid($USER, $INDEX, 1)), Asc(StringMid($OPKEY, $USER_LEN - $INDEX + 1, 1)))) <- ဒါနဲ႔ ပတ္သက္ၿပီးေတာ့ ေအာက္မွာ ရွင္းထားပါတယ္။
Next

If $SIG = _STRINGREPEAT(Chr(32), $USER_LEN) Then
MsgBox(0, "INFO", "Your key was registered.")
Exit
Else
MsgBox(0, "INFO", "Your key is invalid.")
EndIf
EndFunc

ေအာက္ကေတာ့ Program တစ္ခုလုံးရဲ႕ အေရးၾကီးဆုံးလိုင္းပါ
$SIG &= Chr(BitXOR(Asc(StringMid($USER, $INDEX, 1)), Asc(StringMid($OPKEY, $USER_LEN - $INDEX + 1, 1))))

-------------------------
Program ရဲ႕ routine ကို ေသခ်ာ ေလ့လာၾကည့္ရေအာင္။
တစ္ပိုင္းစီခြဲၿပီးေတာ့ ေလ့လာၾကည့္ပါမယ္။
-------------------------

ဥပမာ -user name: $ƴǩǾ
-pass: okys

$PASS_INT ကို တြက္ၾကည့္ပါမယ္။
UserName ရဲ႕ Length က ၄ ၊ Password ရဲ႕ Length က လည္း ၄ ဆုိေတာ့ စားလုိက္ေတာ့ စားလဒ္=၁ ရပါတယ္။
$PASS_INT = Int($USER_LEN / $PASS_LEN) = 4/4 = 1

$PASS_MOD ကို တြက္ပါမယ္။
UserName ရဲ႕ Length က ၄ ၊ Pass ရဲ႕ Length က လည္း ၄ ဆုိေတာ့ အၾကြင္းရွာေတာ့ 0 ရပါတယ္။
$PASS_MOD = Mod($USER_LEN, $PASS_LEN) = 4 mod 4 = 0

$OPKEY အလွည့္ပါ။
$OPKEY = _STRINGREPEAT($PASS, $PASS_INT) & StringLeft($PASS, $PASS_MOD) = okys & "" = okys

တြက္စရာရိွတာ တြက္ၿပီးၿပီဆုိေတာ့ ေနာက္ဆုံးၿဖစ္တဲ့
အေပၚက $SIG &= Chr(BitXOR(Asc(StringMid($USER, $INDEX, 1)), Asc(StringMid($OPKEY, $USER_LEN - $INDEX + 1, 1)))) ဆီကိုၿပန္သြားပါမယ္။
ရွင္းေနရင္ ပိုရႈပ္ကုန္မွာစိုးလို႔ ရွင္းေတာ့ဘူးေနာ္။ ကိုယ့္ဟာကိုယ္ၾကည့္လိုက္ေတာ့။ (အစကေတာ့ ေရးၾကည့္ေသးတယ္။ ကုိယ့္ဟာကိုယ္ၿပန္ဖတ္တာေတာင္ နည္းနည္း မူးလာလုိ႔ ၿပန္ဖ်က္လိုက္တာ။ ကိုယ့္ဟာကိုယ္ ေလ့လာၾကည့္လိုက္ေတာ့။ အဲဒီ့လိုင္းကို လြယ္တာေတာ့ လြယ္တယ္။)
ေနာက္ဆုံးရလာမယ့္အေၿဖကိုေတာ့ တြက္ၿပမယ္

ွ83 XOR 32 = 115 = s
89 XOR 32 = 121 = y
75 XOR 32 = 107 = k
79 XOR 32 = 111 = o

user: $ƴǩǾ
pass: okys

ကဲ ဒါဆုိ အေၿဖရသြားၿပီေပါ့ေနာ္။ အေၿဖဘာလဲ ဆုိတာကို Program Routine ကိုၾကည့္ၿပီးေတာ့ ကိုယ္တိုင္တြက္သြားတဲ့နည္းပါ။
အခု Keygen စေရးမယ္ေနာ္။

နားလည္လားမလည္လားေတာ့ သိဘူး။ က်ေနာ့္ဟာက်ေနာ္ေတာ့ နားလည္တယ္။ ၿပန္သာမရွင္းတတ္လုိ႔။ ကဲ အခု က်ေနာ္ေရးထားတဲ့ keygen ကို ၿပပါမယ္။
Keygen ရဲ႕ Code ေတြကိုေတာ့ ရွင္းၿပဖို႔မလိုဘူးထင္ပါတယ္။ ရိုးရိုးရွင္းရွင္းနဲ႔ ေရးထားတဲ့ ဘီဂင္နာ Code ေလးေတြပါ။ ၾကည့္တာနဲ႔တင္ နားလည္ၾကမွာပါ။

Public Class CrackME2
Dim user, pass As String
Private Sub CrackMe2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox("This is a Keygen...", MsgBoxStyle.Information, "MYANMAR ᴚᴲVᴲЯ₴!Иᵷ SCHOOL")
End Sub

'''''Register Button ပိုင္းကို မူရင္း Code နီးပါးရေအာင္လို႔ ၿပန္ေရးထားတာပါ။''''''

Public Sub btnreg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnreg.Click
checkpass(txtuser.Text, txtpass.Text)
End Sub

Public Function checkpass(ByVal user As String, ByVal pass As String) As String
Dim KEY As String
Dim SIG As Integer
user = txtuser.Text
pass = txtpass.Text

If user.Length < pass.Length Then
MsgBox("Invalid username or key.", MsgBoxStyle.Critical, "ERROR")
Exit Function
ElseIf user.Length < 4 Then
MsgBox("Invalid username or key.", MsgBoxStyle.Critical, "ERROR")
Exit Function
End If

For i As Integer = 1 To user.Length
SIG = Asc(Mid(txtuser.Text, i, 1))
SIG = SIG Xor 32
KEY = Chr(SIG) & KEY
Next

If txtpass.Text = KEY Then
MsgBox("Thanks!! Your Key is now Registered.", , "Registered.")
Me.Close()
Else
MsgBox("Invalid UserName And Password. Try Again.", , "Invalid")
End If

Return SIG
End Function

''''''''''Keygen ထုတ္တဲ့ အပုိင္းေရာက္ပါၿပီ'''''''''''''
Private Sub btngenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnrule.Click
Dim yna As String
Dim key As Integer

If Len(txtuser.Text) < 4 Then
txtpass.Text = "min 4 chars"
Else
For i As Integer = 1 To Len(txtuser.Text)
yna = Asc(Mid(txtuser.Text, i, 1))
yna = yna Xor 32
KEY = Chr(SIG) & KEY
Next
txtpass.Text = KEY
End If

End Sub
End Class

အဆင္ေၿပၾကပါေစဗ်ာ။

ေအာက္ကေတာ့ keygen ကို AutoIt နဲ႔ ဘဲ ၿပန္ေရးထားတဲ့ဟာပါ။ (ေရးသားသူကေတာ့ deurus ၿဖစ္ပါတယ္။ သူူေရးထားတဲ့ VB.NET keygen ေတာင္ရိွေသးတယ္။ ကုဒ္က ဘာမွမကြာလို႔ တင္ေပးေတာ့ဘူးေနာ္)

$MAIN = GUICreate("keygen by deurus", 300, 80, -1, -1, 382205952, 385)
$NAME_LBL = GUICtrlCreateLabel("Username", 5, 5, 60, 20, BitOR(4096, 1))
$NAME_INP = GUICtrlCreateInput("", 70, 5, 225, 20, 1)
$PASS_LBL = GUICtrlCreateLabel("Key", 5, 30, 60, 20, BitOR(4096, 1))
$PASS_INP = GUICtrlCreateInput("", 70, 30, 225, 20, 1)
$REGISTER = GUICtrlCreateButton("Register", 5, 55, 60, 20)
$GIVE_UP = GUICtrlCreateButton("Generate", 70, 55, 60, 20) <- Give Up ဆုိတဲ့ Button ေနရာမွာ Generate button ကို အစားထုိးထားပါတယ္။
$TASK = GUICtrlCreateButton("?", 140, 55, 20, 20)
$AUTHOR = GUICtrlCreateLabel("keygen by deurus", 165, 55, 130, 20, BitOR(4096, 1))
GUISetState(@SW_SHOW, $MAIN)
While True
$MSG = GUIGetMsg()
Switch $MSG
Case $REGISTER
Call("CHECKKEY", GUICtrlRead($NAME_INP), GUICtrlRead($PASS_INP))
Case $GIVE_UP
Call("GETKEY", GUICtrlRead($NAME_INP), GUICtrlRead($PASS_INP)) <- getkey function ကို Give_UP ဆုိတဲ့ button ထဲမွာ ထည့္လိုက္ပါတယ္။ Smile
Case $TASK
MsgBox(0, "Info", "keygen by deurus")
Case - 3
Exit
EndSwitch
Sleep(15)
WEnd

Func GETKEY($USER, $PASS) <- ဒါကေတာ့ keygen function ၿဖစ္တဲ့ GETKEY ပါ။
Local $OPKEY = "", $SIG = ""
Local $USER_LEN = StringLen($USER)
Local $PASS_LEN = StringLen($USER)
If $USER_LEN < 4 Then
GUICtrlSetData($PASS_INP ,"min 4 chars");
Else
For $INDEX = 1 To $USER_LEN
$SIG = Chr(BitXOR(Asc(StringMid($USER, $INDEX, 1)), 32)) & $SIG
Next
GUICtrlSetData($PASS_INP ,$SIG);
EndIf
EndFunc

Func CHECKKEY($USER, $PASS) <- ဒါကေတာ့ Original Code ပါ
Local $OPKEY = "", $SIG = ""
Local $USER_LEN = StringLen($USER)
Local $PASS_LEN = StringLen($PASS)
If $USER_LEN < $PASS_LEN Then
MsgBox(0, "ERROR", "Invalid username or key.")
ElseIf $USER_LEN < 4 Then
MsgBox(0, "ERROR", "Invalid username or key.")
Exit
EndIf
$PASS_INT = Int($USER_LEN / $PASS_LEN)
$PASS_MOD = Mod($USER_LEN, $PASS_LEN)
$OPKEY = _STRINGREPEAT($PASS, $PASS_INT) & StringLeft($PASS, $PASS_MOD)
For $INDEX = 1 To $USER_LEN
$SIG &= Chr(BitXOR(Asc(StringMid($USER, $INDEX, 1)), Asc(StringMid($OPKEY, $USER_LEN - $INDEX + 1, 1))))
Next
If $SIG = _STRINGREPEAT(Chr(32), $USER_LEN) Then
MsgBox(0, "INFO", "Your key was registered.")
Else
MsgBox(0, "INFO", "Your key is invalid.")
EndIf
EndFunc

ဒီေလာက္ဆုိ ေလ့လာလို႔ရမယ္ထင္ပါတယ္။
ကို rhythm လည္း က်ေနာ္လိုတာရိွရင္ ၿဖည့္ေပးပါဦးေနာ္။ အားကုိးပါတယ္။ အစ္ကိုသာ က်ေနာ့္ကို အနီးကပ္သင္ေပးႏုိင္ရင္ ေကာင္းမယ္။ Very Happy Very Happy အခုေတာ့ ဟိုပုန္းဒီပုန္းနဲ႔ ဘယ္လိုက္ရမွန္းသိဘူး။ Razz Razz
ကိုယ့္ဟာကုိယ္ေလ့လာတာ ထင္သေလာက္ ခရီးမေရာက္ေသးဘူး။ ေနာက္တစ္ခါ ရန္ကုန္ၿပန္ေရာက္ရင္ အေၾကာင္းၾကားလိုက္ေနာ္။ အိမ္လာၿပီး သင္မယ္။ ဒီတစ္ခါ တစ္ေနကုန္ေနမွာ။ Razz Razz

ps# deurus ၏ AutoIt ႏွင့္ေရးထားေသာ keygen code ေတြကေန ၿပီးေတာ့မွ ၿပန္လည္ရွင္းၿပေပးထားတာပါ။ Crack တုန္းကေတာ့ crack လို႔ရၿပီး မရွင္းၿပတတ္လို႔ ကိုးကားရွင္းၿပထားပါတယ္။ နားမလည္တာရိွရင္ swanhtet1992[at]gmail[dot]com မွာေမးၿမန္းႏုိင္ပါတယ္။ အတတ္ႏုိင္ဆုံး ၿပန္ေၿဖေပးပါ့မယ္။
ေလာေလာဆယ္ေတာ့ ႏုိ၀င္ဘာ တစ္လ Online နားထားပါတယ္။ (က်န္းမာေရးေၾကာင့္ရယ္ ၊ စာဖတ္ခ်င္လုိ႔ရယ္ ၊ Software Protection ဆုိတာကို အေလးမထားတဲ့ Myanmar Game Studio တစ္ခုက ထြက္သမွ် Game ေတြကို crack လုပ္ဖို႔အတြက္ရယ္ေၾကာင့္ပါ။ Razz Razz)
အားလုံး ကိုယ္စိတ္ႏွစ္ၿဖာ က်န္းမာရႊင္လန္းၾကပါေစ
$ƴǩǾ

http://www.myanmaritresource.info

7Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 5th November 2009, 3:50 pm

rhythm

rhythm
VIP Member



VIP Member
ထင္ေတာ့ထင္သား။ autoIT script (*.au3) ကေနပဲ ေျခရာခံတာျဖစ္မယ္လို႕။
သူကေတာ့ script ဆိုေတာ့ ပိုလြယ္တယ္ေလ။ Olly နဲ႕ဆိုရင္ နည္းနည္းေလး လက္၀င္မယ္။ [You must be registered and logged in to see this image.]

http://myanmarcrackingteam.blog.com

8Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 5th November 2009, 4:53 pm

sHa92

sHa92
Founder



Founder
rhythm wrote:ထင္ေတာ့ထင္သား။ autoIT script (*.au3) ကေနပဲ ေျခရာခံတာျဖစ္မယ္လို႕။
သူကေတာ့ script ဆိုေတာ့ ပိုလြယ္တယ္ေလ။ Olly နဲ႕ဆိုရင္ နည္းနည္းေလး လက္၀င္မယ္။ [You must be registered and logged in to see this image.]

ဟီး။
က်ေနာ္ Olly နဲ႔ စလုပ္ၾကည့္ေသးတယ္။
၄ နာရီေလာက္ၾကာသြားတယ္။ ေခါင္းေတြကိုမူးလို႔။ အဲဒါနဲ႔ လက္ေလ်ာ့လုိက္တာ။
ၿပီးေတာ့မွ Script ကို ဖတ္ၿပီးလုပ္လိုက္တာေလ။ ဟီး

http://www.myanmaritresource.info

9Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 14th November 2009, 11:40 am

rhythm

rhythm
VIP Member



VIP Member
AutoIt ရဲ႕ သေဘာကေတာ့ Crackme.au3 ကို Crackme.exe အျဖစ္ေျပာင္းလဲေပးပါတယ္။ ဒီ့ေနာက္မွာေတာ့ UPX 3.03 နဲ႕ pack လုပ္ပါတယ္။


ဒါေၾကာင့္ AutoIt နဲ႕ ေရးထားတဲ့ ပရိုဂရမ္ကို crack လုပ္ေတာ့မယ္ဆိုရင္ AutoIt Decompiler .exe to .au3 ကို သံုးျပီး Crackme.au3 script ကို ရယူရပါမယ္။ ဒီနည္းနဲ႕ crack လုပ္တာကေတာ့ အဆင္ေျပဆံုးပါပဲ။


တကယ္ေတာ့ AutoIt က Crackme.au3 ကို Crackme.exe အျဖစ္ build လုပ္ေပးလိုက္ခ်ိန္မွာ compile လုပ္ထားတဲ့ Crackme.a3x ကို Crackme.exe မွာ overlay (တခါတည္းတြဲေပးလိုက္ပါတယ္)
လုပ္ေပးလိုက္ပါတယ္။ ဒါေၾကာင့္ Olly ကိုအသံုးျပဳျပီး Crackme.exe ဖိုင္ကို unpack လုပ္ခ်ိန္မွာ Olly က Overlay လုပ္ထားတဲ့ Crackme.a3x ကို dump လုပ္ေပးႏိုင္ျခင္းမရွိပါဘူး။ ဒါေၾကာင့္ dump(unpack) လုပ္ထားတဲ့ Crackme.exe ရဲ႕ဖိုင္အဆံုးမွာ overlay ဖိုင္ကို ကူးထည့္ေပးရပါမယ္။ ဒီလိုလုပ္ဖို႕ရာအတြက္ Hex editor တစ္ခုခုကို အသံုးျပဳရမွာျဖစ္ပါတယ္။ Overlay ဖိုင္ကို မကူးထည့္ေပးဘူးဆိုရင္ေတာ့ "Unable to open the script file" ဆိုတဲ့ error box တက္လာမွာျဖစ္ပါတယ္။



Unpack လုပ္ျပီး overlay ဖိုင္တြဲထားတဲ့ Crackme.exe ဖိုင္ကို crack လုပ္ဖို႕၊ serial ရွာဖို႕ Olly နဲ႕ ဖြင့္တဲ့အခါမွာ ကၽြန္ေတာ္တုိ႕တြဲေပးလိုက္တဲ့ overlay ဖိုင္ ပါလာမွာ မဟုတ္ပါဘူး။ (ဆိုလိုတာက
overlay ဖိုင္ကို RAM ေပၚ မကူးတင္ပါဘူး)။ ဒါေၾကာင့္ Crackme.exe က Crackme.a3x (Overlay ဖိုင္) ကိုဖတ္ႏိုင္ဖို႕ CreateFile (ရွိျပီးသားဖိုင္ကိုဖတ္ရန္ ဖတ္ျခင္း)၊ ReadFile (စာလံုးမ်ားကိုဖတ္ျခင္း)
API ေတြကို အသံုးျပဳပါတယ္။ RAM ေပၚက Crackme.exe က disk ေပၚက CrackMe.exe ရဲ႕ overlay ဖိုင္ကို ဖတ္တာျဖစ္ပါတယ္။



Register လုပ္ဖို႕ ေပၚေစတဲ့ dialog ကိုေတာ့ CreateWindowExW API ကို အသံုးျပဳပါတယ္။ (W ဆိုတာကေတာ့ ယူနီကုဒ္စာလံုးကို အသံုးျပဳမယ္လို႕ ေျပာတာပါ။) Edit text box ထဲရိုက္ထည့္တဲ့
စာလံုးေတြ (User name နဲ႕ key) အတြက္ GetWindowTextW API ကို အသံုးျပဳတာျဖစ္ပါတယ္။ ဒါေၾကာင့္ သင့္အေနနဲ႕ ဒီပရိုဂရမ္ရဲ႕ serial ကိုရွာမယ္ဆိုရင္ GetWindowTextW API မွာ breakpoint သတ္မွတ္ျပီး ရွာတာ အျမန္ဆံုးျဖစ္ပါလိမ့္မယ္။ ဆိုလိုတာက GetWindowTextW API ကေန သင္ breakpoint ဖမ္းထားတဲ့ ေနာက္ေနရာတစ္ခုဆီ Trace over (Ctrl+F12) လုပ္ခိုင္းတာပါ။
ျပီးရင္ View menu က Run trace ကိုေရြးျပီးၾကည့္ရင္ ပရိုဂရမ္အလုပ္လုပ္ပံု အဆင့္ဆင့္ကို ျမင္ရမွာျဖစ္ပါတယ္။



အၾကံျပဳလိုုတာကေတာ့ သင့္မွာ AutoIt Decompiler .exe to .au3 (သို႕) myAutToExe 2.07 မရွိခဲ့့ဘူးဆိုရင္ AutoIT နဲ႕ compile လုပ္ထားတဲ့ script ေတြကို ၾကံဳခဲ့မယ္ဆိုရင္ serial ရွာမယ့္အစား
crack လုပ္တာက ပိုျမန္မွာျဖစ္ပါတယ္။



ဥပမာ -

Code:
0040FDB6  CALL DWORD PTR DS:[<&KERNEL32.CompareStringW>]
0040FDBC  TESTEAX,EAX
0040FDBE  JE CrackMe_.0042A56E
0040FDC4  POP EDI
0040FDC5  ADD EAX,-2


ဒီဥပမာကိုၾကည့္လိုက္ရင္ ပထမဆံုး EAX တန္ဖိုး သုညျဖစ္မျဖစ္စစ္ပါတယ္။ သုညျဖစ္ရင္ error တက္တာျဖစ္တဲ့အတြက္ JE ကို စဥ္းစားစရာမလိုပါဘူး။ ADD EAX, -2 ဟာ စိတ္၀င္စားဖို႕
ေကာင္းပါတယ္။ မွတ္ထားရမွာက API function ေတြဟာ သူတို႕ရဲ႕ return value ကို EAX မွာ သိမ္းဆည္းပါတယ္။ ဒါေၾကာင့္ ADD EAX, -2 အစား MOV AL,0 ဆိုရင္ ကၽြန္ေတာ္တို႕ရဲ႕
ပရိုဂရမ္ဟာ register ျဖစ္ပါျပီ။ ဘာေၾကာင့္လဲဆိုေတာ့ string ႏွစ္ခုဟာ တန္ဖိုးညီခဲ့ရင္ CompareStringW က return တန္ဖိုးအျဖစ္ 2 ကို EAX ထဲမွာ သိမ္းဆည္းမွာမို႕လို႕ပါ။
(ဒါကလဲ သင္ရိုက္ထည့္လိုက္တဲ့ user name နဲ႕ key ရဲ႕ length တူညီမွသာ ျဖစ္ပါတယ္။ မတူညီခဲ့ရင္ေတာ့ CompareStringW API ဆီေရာက္လာမွာ မဟုတ္ပါဘူး။)



ေျဖဆိုသူ
- rhythm (Myanmar Cracking Team)



Last edited by rhythm on 14th November 2009, 11:54 am; edited 2 times in total

http://myanmarcrackingteam.blog.com

10Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 14th November 2009, 11:44 am

rhythm

rhythm
VIP Member



VIP Member
FUNC _HEXTOSTRING($STRHEX)
... // အေရးမၾကီး။
FUNC _STRINGADDTHOUSANDSSEP($S_STRING,$I_CONVERT_LCID=-1,$I_CURRENT_LCID=-1)
... // အေရးမၾကီး။

FUNC _STRINGBETWEEN($S_STRING,$S_START,$S_END,$V_CASE=-1)
... // အေရးမၾကီး။

FUNC _STRINGENCRYPT($I_ENCRYPT,$S_ENCRYPTTEXT,$S_ENCRYPTPASSWORD,$I_ENCRYPTLEVEL=1)
... // အေရးမၾကီး။

FUNC _STRINGEXPLODE($SSTRING,$SDELIMITER,$ILIMIT=0)
... // အေရးမၾကီး။

FUNC _STRINGINSERT($S_STRING,$S_INSERTSTRING,$I_POSITION)
... // အေရးမၾကီး။

FUNC _STRINGPROPER($S_STRING)
... // အေရးမၾကီး။



FUNC _STRINGREPEAT($SSTRING,$IREPEATCOUNT) // User-defined Function
LOCAL $SRESULT
SELECT
CASE NOT STRINGISINT($IREPEATCOUNT)
SETERROR(1)
RETURN ""
CASE STRINGLEN($SSTRING)<1
SETERROR(1)
RETURN ""
CASE $IREPEATCOUNT<=0
SETERROR(1)
RETURN ""
CASE ELSE
FOR $ICOUNT=1 TO $IREPEATCOUNT
$SRESULT&=$SSTRING
NEXT
RETURN $SRESULT
ENDSELECT
ENDFUNC


$MAIN=GUICREATE("Register",300,80,-1,-1,382205952,385) // Window တစ္ခုကို ဖန္တီးသည္။
GUISETSTATE(@SW_SHOW,$MAIN) // Window ကိုျပသသည္။
WHILE TRUE
$MSG=GUIGETMSG()
SWITCH $MSG
CASE $REGISTER // Register button ကိုႏွိပ္ခဲ့လွ်င္ ....

CALL("CheckKey",GUICTRLREAD($NAME_INP),GUICTRLREAD($PASS_INP))

// Name ေနရာတြင္ "rhythm" ဟုရိုက္ပါ။ Key ေနရာတြင္ "ABCDEF" ဟုရိုက္ထည့္ၾကည့္ပါမည္။
CASE $GIVE_UP
EXIT
CASE $TASK
MSGBOX(0,"Info","Find a valid username and key to register.")
CASE -3
EXIT
ENDSWITCH
SLEEP(15)
WEND

FUNC CHECKKEY($USER,$PASS)
LOCAL $OPKEY="",$SIG="" // Local Variable အျဖစ္ေၾကညာ
LOCAL $USER_LEN=STRINGLEN($USER) // user name ေနရာတြင္ "rhythm" လို႕ရိုက္ထည့္ခဲ့တာေၾကာင့္ 6 ျဖစ္ပါမယ္။
LOCAL $PASS_LEN=STRINGLEN($PASS) // key ေနရာတြင္ "ABCDEF" လို႕ရိုက္ထည့္ခဲ့တာေၾကာင့္ 6 ျဖစ္ပါမယ္။
IF $USER_LEN<$PASS_LEN THEN // Statement False
MSGBOX(0,"ERROR","Invalid username or key.")
EXIT
ELSEIF $USER_LEN<4 THEN // Statement False
MSGBOX(0,"ERROR","Invalid username or key.")
EXIT
ENDIF
$PASS_INT=INT($USER_LEN/$PASS_LEN)

// User name ၏ length ကို password ၏ length ျဖင့္စားေသာရလဒ္ကို integer အျဖစ္ေျပာင္း။

ဒါေၾကာင့္ 6/6 = 1
$PASS_MOD=MOD($USER_LEN,$PASS_LEN)

// User name ၏ length ကို password ၏ length ျဖင့္စားျပီး အၾကြင္းရွာသည္။
ဒါေၾကာင့္ 6/6 = 0

$OPKEY=_STRINGREPEAT($PASS,$PASS_INT) & STRINGLEFT($PASS,$PASS_MOD)

// StringLeft (string, စာလံုးအေရအတြက္) = String ၏ ဘယ္ဘက္မွစျပီး သတ္မွတ္ထားေသာ အေရအတြက္ကို ဖတ္သည္/ သိမ္းဆည္းသည္။

ဒါေၾကာင့္ StringLeft ("ABCDEF", 0) ျဖစ္ေသာေၾကာင့္ StringLeft function က ဘာစာလံုးမွ ဖတ္မွာ မဟုတ္ပါဘူး။

StringLeft ("ABCDEF",1) = "ABCDEF" ျဖစ္ပါမယ္။ ဘာေၾကာင့္လဲဆိုေတာ့ $SRESULT = "ABCDEF" ျဖစ္လို႕ပါ။
"ABCDEF" နဲ႕ "" ကို ေပါင္းတဲ့အခါ (& ကိုေတြ႕လို႕ AND operation လုပ္တယ္ မထင္ပါနဲ႕။ string ႏွစ္ခုကို concatenate လုပ္ဖို႕ သံုးတာပါ။) "abcdef" ပဲရပါတယ္။

FOR $INDEX=1 TO $USER_LEN // for(index = 1; index <= USER_LEN; index++) ႏွင့္တူသည္။
$SIG&=CHR(BITXOR(ASC(STRINGMID($USER,$INDEX,1)),
ASC(STRINGMID($OPKEY,$USER_LEN-$INDEX+1,1))))
// StringMid (string, string ၏အစ, စာလံုးအေရအတြက္) = သတ္မွတ္ထားေသာေနရာမွစျပီး သတ္မွတ္ထားေသာ စာလံုးအေရအတြက္ကို သိမ္းဆည္းသည္။ ထို႕ေနာက္ ASCII အျဖစ္ေျပာင္းသည္။

နမူနာ -

Sig = Sig + (StringMid("rhythm",1,1) ^ (StringMid("ABCDEF",6,1)
Sig = "" + ("r" ^ "F")
Sig = "" + (114 ^ 70)
Sig = "" + 52 = "4"

for loop ကို ပထမဆံုး အၾကိမ္ ပတ္ျပီးခ်ိန္မွာ "4" ရရွိပါတယ္။
for loop ကို ဒုတိယ အၾကိမ္ ပတ္ျပီးခ်ိန္မွာ "4-" ရရွိပါတယ္။ ( "h" နဲ႕ "E" ကို XOR လုပ္)
တတိယအၾကိမ္မွာ "4-=" ရပါတယ္။ ( "y" နဲ႕ "D" ကို XOR လုပ္)
၄ၾကိမ္ေျမာက္မွာ "4-=7" ရပါတယ္။ ( "t" နဲ႕ "C" ကို XOR လုပ္)
၅ၾကိမ္ေျမာက္မွာ "4-=7*" ရပါတယ္။
၆ၾကိမ္ေျမာက္မွာ "4-=7*," ရပါတယ္။

ဒါေၾကာင့္ $SIG & =CHR(BITXOR(ASC(STRINGMID($USER,$INDEX,1)), ASC(STRINGMID($OPKEY,$USER_LEN-$INDEX+1,1)))) ကိုေျဖရွင္းလိုက္တဲ့အခါမွာ

ေနာက္ဆံုးရလာတဲ့ $SIG တန္ဖိုးဟာ 4-=7*, ျဖစ္ပါတယ္။ $SIG = $SIG + XOR_Result ေၾကာင့္ ဒီအေျဖရတာျဖစ္ပါတယ္။ + =

NEXT // index ++; နဲ႕တူပါတယ္။
IF $SIG=_STRINGREPEAT(CHR(32),$USER_LEN)THEN

// 32 ဟာ space နဲ႕ညီတာေၾကာင့္ ကၽြန္ေတာ္တို႕ တြက္ထုတ္လိုက္တဲ့ SIG တန္ဖိုးဟာ " " (space ၆ ေနရာစာ)နဲ႕ ညီကိုညီရပါမယ္။
MSGBOX(0,"INFO","Your key was registered.")
EXIT
ELSE
MSGBOX(0,"INFO","Your key is invalid.")
ENDIF
ENDFUNC



// ဒါေၾကာင့္ ေနာက္ဆံုးအေနနဲ႕ မွတ္ခ်က္ခ်ရမယ္ဆိုရင္ ကၽြန္ေတာ္တို႕ ရိုက္ထည့္လိုက္တဲ့ user name နဲ႕ key တန္ဖိုးတို႕ကို XOR လုပ္တဲ့အခါမွာ space ၆ေနရာနဲ႕ ညီဖို႕လိုပါတယ္။

ဒီလိုညီဖို႕ရာအတြက္
user name = "rhythm"
key = "MHTYHR"
ျဖစ္ရပါမယ္။


ဘာေၾကာင့္ရသလဲဆိုတာၾကည့္ၾကပါမယ္။
user name က "r" နဲ႔ သက္ဆိုင္တဲ့ key ကိုအရင္ရွာၾကည့္ပါမယ္။

"r" ^ " " = 114d ^ 32d = 82d = "R"
"h" ^ " " = 104d ^ 32d = 72d = "H"
"y" ^ " " = 121d ^ 32d = 89d = "Y"
"t" ^ " " = 116d ^ 32d = 84d = "T"
"h" ^ " " = 104d ^ 32d = 72d = "H"
"m" ^ " " = 109d ^ 32d = 77d = "M"

ေျပာင္းလို႕ရတဲ့ စာလံုး "RHYTHM" ေတြကို "ABCDEF" ေနရာမွာ အစားထိုးပါမယ္။
"r" နဲ႕ "F" ကို XOR လုပ္ခဲ့တာ အမွတ္ရပါ။ အဲဒီတုန္းက "4" ရခဲ့ပါတယ္။ "4" အစား " " (space) ကိုရဖို႕အတြက္ "R" နဲ႕ XOR လုပ္ရမွာျဖစ္ပါတယ္။
ဒါေၾကာင့္ "F" ေနရာမွာ "R" နဲ႕ အစားထိုးရပါမယ္။
ဒီလိုနဲ႕ "E" ေနရာမွာ "H"၊ "D" ေနရာမွာ "Y"၊ "C" ေနရာမွာ "T"၊ "B" ေနရာမွာ "H"၊ "A" ေနရာမွာ "M" အစားထိုးျပီးတဲ့ေနာက္မွာေတာ့
key ေနရာမွာ ကၽြန္ေတာ္တို႕ ရိုက္ထည့္ရမွာက "ABCDEF" အစား "MHTYHR" ျဖစ္လာပါတယ္။



Keygen ေရးတာကေတာ့ သင္ ဥာဏ္ရွိရင္ ရွိသလို ေရးလို႕ရပါတယ္။


$ƴǩǾ ရဲ႕ရွင္းလင္းခ်က္မွာ ေထာက္ျပစရာ (၂)ခ်က္ရွိပါတယ္။

(၁) ဘာအတြက္ေၾကာင့္ UPX ကို unpack လုပ္ခိုင္းသလဲေတာ့ မသိဘူး။ myExe2Aut ရွိထားရင္ *.au3 ဖိုင္ကိုရဖို႕ UPX ကို unpack လုပ္စရာ မလိုပါဘူး။

(၂) ေနာက္တစ္ခုမရွင္းတာက $OPKEY တြက္ပံုပါ။ _STRINGREPEAT က string ကို ေျပာင္းျပန္လွည့္ေပးႏိုင္ျခင္း မရွိပါဘူး။ အၾကီးအေသး ေျပာင္းေပးႏိုင္ျခင္း မရွိပါဘူး။


Code:
$OPKEY အလွည့္ပါ။
$OPKEY = _STRINGREPEAT($PASS, $PASS_INT) & StringLeft($PASS, $PASS_MOD) = okys & "" = okys

http://myanmarcrackingteam.blog.com

11Kengen Me by Andy [Guide] Empty Re: Kengen Me by Andy [Guide] 19th November 2009, 5:32 pm

sHa92

sHa92
Founder



Founder
ရွင္းသြားတာ တကယ့္ကို ေကာင္းတယ္ဗ်ိဳ႕။
ပညာယူသြားပါတယ္။ ခုလိုရွင္းၿပေပးတာ ေက်းဇူးတင္ပါတယ္။

က်ေနာ့္ရဲ႕ မေတာ္မတတ္မႈကို ၿဖည့္ေၿပာေပးသြားတာလည္း ရွဲရွဲနီ။ Very Happy

rhythm wrote:
$ƴǩǾ ရဲ႕ရွင္းလင္းခ်က္မွာ ေထာက္ျပစရာ (၂)ခ်က္ရွိပါတယ္။

(၁) ဘာအတြက္ေၾကာင့္ UPX ကို unpack လုပ္ခိုင္းသလဲေတာ့ မသိဘူး။ myExe2Aut ရွိထားရင္ *.au3 ဖိုင္ကိုရဖို႕ UPX ကို unpack လုပ္စရာ မလိုပါဘူး။

(၂) ေနာက္တစ္ခုမရွင္းတာက $OPKEY တြက္ပံုပါ။ _STRINGREPEAT က string ကို ေျပာင္းျပန္လွည့္ေပးႏိုင္ျခင္း မရွိပါဘူး။ အၾကီးအေသး ေျပာင္းေပးႏိုင္ျခင္း မရွိပါဘူး။


Code:
$OPKEY အလွည့္ပါ။
$OPKEY = _STRINGREPEAT($PASS, $PASS_INT) & StringLeft($PASS, $PASS_MOD) = okys & "" = okys

သူေရးထားတဲ့ Code နဲ႔ ပတ္သက္ၿပီးေတာ့ က်ေနာ္သိပ္နားမလည္ထားတဲ့အတြက္ OPKEY ကို က်ေနာ္မတြက္ၿပထားပါဘူး။ Smile Smile
အဲဒီ့လိုင္းနဲ႔ ပတ္သက္ၿပီးေတာ့ အဲဒါေၾကာင့္မို႔ က်ေနာ္ရွင္းကိုရွင္းမထားတာေလ။ ဟီးဟီး Smile
ရလာမယ့္ Result ေတာ့ထုတ္ၿပထားတယ္။

အဲဒီ့လိုင္းနဲ႔ပတ္သက္ၿပီး က်ေနာ္နားလည္တာကေတာ့
STRINGREPEAT က string ကို ေၿပာင္းၿပန္မလွည့္ေပးတာ ဟုတ္ပါတယ္။ သူက String ရိွသေလာက္ကို ၿဖတ္ၿပီးေတာ့ တစ္ခုခ်င္းစီကို Loop ပတ္တဲ့ သေဘာလို႔ ထင္ပါတယ္။ (က်ေနာ့္အထင္ သက္သက္ Razz )
StringLeft ဆုိတာနဲ႔ကမွ တဲြၿပီးေတာ့ စာကို ေၿပာင္းၿပန္လွည့္ေပးတာလုိ႔က်ေနာ္ထင္ပါတယ္။

မွားတာရိွရင္ၿဖည့္ေပးပါဦး။ ကိုယ္မကြ်မ္းတဲ့ ဘာသာကို ခရက္ရတာ ေတာ္ေတာ္လက္ေပါက္ကပ္တယ္ဗ်ာ။ Sad

http://www.myanmaritresource.info

Sponsored content


View previous topic View next topic Back to top  Message [Page 1 of 1]

Permissions in this forum:
You cannot reply to topics in this forum

 

Free forum | ©phpBB | Free forum support | Report an abuse | Cookies | Forumotion.com