msg2.0.db破解步骤

还在为怎么破解的朋友注意,本篇分享有详细说明。

msg2.0.db破解步骤

操作方法

(01) 破解步骤(研究学习用途)-Alex  分类: 计算机 2009-12-23 09:52步骤简短,看不懂的,本人不提供支持。本人原创。纯研究,用于黑客或商业用途,请别联系我。,这个东西真麻烦,不象之前的msgex那么容易破解。下面简短陈述。看的懂得拿走,看不懂的自己想。如果你连是什么都不知道,那就别往下看了。你肯定看不懂。更浪费时间。1.需要:7-zip,DBcompresser或者Paradox (Paradox用起来麻烦需要library,推荐DBC)2 用7—zip释放你需要破解得。 得到buddy,discuss,group,mobile,system这5个文件夹。以及 , , 这3个加密的dat文件。3 需要你自己的msg2.0 并且释放。得到buddy,discuss,group,mobile,system这5个文件夹。以及 , , 这3个加密的dat文件。注:buddy是重点,其余的文件夹缺失,没有关系。4 打开需破解的buddy文件夹,里面就是很多qq号码组成的文件夹。再任意打开其中一个看到,, 三个dat文件。 将自己的  复制到需破解buddy文件夹下。根据号码复制自己需要的。当然,你也可以全部复制。5 把7-zip 释放的3个你自己的dat文件,既 , , 覆盖到需破解的msq2.0文件夹中。(却一不可)6 用DBcompresse组合文件,重命名为,默认储存路径为C:gainover 。放入userXXXX里面。(DOS可以直接combine,这个我没研究,看到有人研究过)7 用复制合成的msg2.0 登陆自己的号码,就能直接看到其中记录。目标人一般在你的黑名单或已删除联系人中。8 破解完毕。享受吧。该哭的哭,该笑的笑。如果你懂JAVA.可以直接破解dat,算法已有。还有,别以为这些buddy里面的dat很容易破解。Passware Kit 没有破出来,想破壳的人...绕道吧...感谢朋友DiLi,提供 qq2009  VB结构。以下是 分析图。如果需要查看内容的话,用IStorage::OpenStream函数就可以打开,这里不多说。// : Defines the entry point for the console application.//#include "stdafx.h"#include "objidl.h"#include "comdef.h"void PrintDB(IEnumSTATSTG *pEnum,IStorage *pStore,int Depth){STATSTG statstg;while(NOERROR == pEnum->Next(1,&statstg,NULL)){for(int i=0;i<Depth;i++)printf("t|");wprintf(_T("---%sn"),Name);if( == STGTY_STORAGE){IStorage *pStore1=NULL;HRESULT hr;hr=pStore->OpenStorage(Name,NULL,STGM_READ|STGM_DIRECT|STGM_SHARE_EXCLUSIVE,NULL,0,&pStore1);if(hr != S_OK || pStore1==NULL){wprintf(_T("open %s errorn"),Name);continue;}IEnumSTATSTG *pEnum1=NULL;pStore1->EnumElements(0,NULL,0,&pEnum1);PrintDB(pEnum1,pStore1,Depth+1);pEnum1->Release();pStore1->Release();}}}int _tmain(int argc, _TCHAR* argv[]){wchar_t szFileName[]=_T("E:下载保存XXXX"//换成你的QQ);::CoInitialize(NULL);IStorage *pStore=NULL;IStream *pStream=NULL;HRESULT hr=E_FAIL;hr=::StgOpenStorage(_bstr_t(szFileName),NULL,STGM_READ|STGM_DIRECT|STGM_SHARE_EXCLUSIVE,NULL,0,&pStore);if(hr != S_OK || pStore==NULL){printf("open failedn");return 0;}IEnumSTATSTG *pEnum=NULL;hr = pStore->EnumElements(0,NULL,0,&pEnum );if(hr != S_OK || pStore==NULL){printf("enumerate failedn");return 0;}PrintDB(pEnum,pStore,0);pEnum-> Release();pStore->Release();return 0;}输出结果---buddy|---8362xx|    ||    ||    ||---169329xx|    ||    ||    |---group|---2048838xx|    ||    ||    ||---2049667xx|    ||    ||    |---mobile---system|---1|    ||    ||---3|    ||    ||---4|    ||    |以下是JAVA。package com;import ;import InputStream;import NotFoundException;import OutputStream;import ception;/*** Decry * @author rmb* 2008-08-07*/public class LoginUinListDecry {FileOutputStream fw = null;FileInputStream fr = null;boolean isFileEnd = false;int[] ascii = ;/*** init Decry,Encry file handle* @return*/public int initFile(){int result = -1;try {fw = new FileOutputStream((new File("LoginUinList_")));fr = new FileInputStream((new File("")));result = 1;} catch (FileNotFoundException e) {result = -1;tStackTrace();}return result;}/*** Judge file effectiveness* @return*/public int isEffectHead(){int result = -1;try{if(fr!=null){byte[] byte_head = new byte[13];(byte_head);if(byte_head[0] == 0x51 && byte_head[1] == 0x41 ){ //&& byte_head[4] == 0x0Eresult = 1;}if(result>0){(new byte[6]);}}}catch(Exception e){result = -1;tStackTrace();}return result;}/*** decry LoginUinList data* @param key* @param orig_Data* @return*/public byte[] decryData(byte key,byte[] encry_Data)/* mov     dl, byte ptr [ecx+esi]* not     dl* xor     dl, al* mov     byte ptr [ecx+esi], dl*/byte single_Data;for(int i=0;i<encry_th;i++){single_Data = encry_Data[i];single_Data = (byte)(~single_Data);single_Data = (byte)(single_Data^key);encry_Data[i] = single_Data;return encry_Data;}public byte[] getEncryData(byte encryDataLength){byte[] encryData = new byte[encryDataLength];int read_num = 0;try {read_num = (encryData);if(read_num!=th){isFileEnd = true;}return encryData;} catch (IOException e) {tStackTrace();}return null;}public byte[] getKeyField(int length){int read_num = 0;if(fr!=null){byte[] keyField = new byte[length];try {read_num = (keyField);if(read_num!=th){isFileEnd = true;}return keyField;} catch (IOException e) {tStackTrace();return null;}}return null;}public byte getKey(byte[] KeyField){byte key;key = KeyField[1];return key;}public byte getKeyDataValue(byte[] KeyField){byte key;key = KeyField[0];return key;}public boolean isNeedDecry(byte key){int int_key = (int)key;if(int_key<5){return false;}return true;}public boolean isNeedJump(byte[] KeyField){if(KeyField[0]==0x09){return true;}return false;}public byte[] trunAround(byte[] DateValue){byte[] temp = new byte[th];for(int i=0;i<th;i++){temp[i] = DateValue[th-i-1];}return temp;}public int writeData(byte[] decryData){try{e(decryData);return 1;}catch(Exception e){tStackTrace();}return -1;}public int writeDataString(byte[] decryData){try{int height = 0;int down = 0;for(int i=0;i<th;i++){height = ((decryData[i]&240)>>4);if(height<0){height = 0;}down = (decryData[i]&15);if(down<0){down = 0;}e(ascii[height]);e(ascii[down]);}return 1;}catch(Exception e){tStackTrace();}return -1;}public void fileFlush(){try {h();} catch (IOException e) {tStackTrace();}}public void jump(){try {(new byte[8]);} catch (IOException e) {tStackTrace();}}public int run(){int result = -1;byte[] keyField;byte key;byte[] decryData;byte[] encryData;if(initFile()>0){if(isEffectHead()>0){while(!isFileEnd){result=-1;keyField = getKeyField(3);if(keyField==null) break;if(isNeedJump(keyField)){jump();writeData(new byte[]);//block linecontinue;}key = getKey(keyField);encryData = getEncryData(key);if(encryData==null) break;decryData = decryData(key,encryData);writeData(decryData);writeData(new byte[]);//:keyField = getKeyField(4);if(keyField==null) break;key = getKeyDataValue(keyField);encryData = getEncryData(key);if(encryData==null) break;if(isNeedDecry(key)){decryData = decryData(key,encryData);decryData = trunAround(decryData);}else{decryData = trunAround(encryData);}writeDataString(decryData);writeData(new byte[]);//break linefileFlush();result=1;}}destroy();}return result;}/*** destroy* @return*/public int destroy(){int result = -1;try{if(fw!=null){e();}if(fr!=null){e();}result = 1;}catch(Exception e){result = -1;tStackTrace();}return result;}public static void main(String[] args) {LoginUinListDecry ListDecry = new LoginUinListDecry();if(()>0){tln("Decry Success");}else{tln("Decry Fail");}}

特别提示

因本篇分享所造成的损失与作者无关。