身份證資訊查詢與校驗(IdCard) v1.01
身份證資訊查詢與校驗(IdCard)
v1.01
軟體名稱: 身份證資訊查詢與校驗(IdCard) v1.01
軟體語言: 簡體中文
軟體型別: 共享軟體 / 實用工具
/ 其他工具
執行環境: WinXP, Win2000, NT, WinME, Win9X
授權方式: 共享軟體
軟體大小: 747
KB
軟體等級:
整理時間: 2003-4-22 22:33:00
開 發 商:
下載地址: http://ttdown.com/SoftView_12998.htm
軟體簡介
該軟體主要應用於對身份證號碼資訊的查詢與校驗,並且具備升級15位舊身份證為18位新身份證號碼格式的能力。尤其適用於對不明身份證號碼持有人的資訊查詢與校驗。功能:1.查詢身份證號碼持有人的
住址,生日,性別等資訊。2.校驗身份證號碼,檢查身份證號碼的真實性。3.將15位的舊身份證號碼升級為18位的新身份證號碼。使用方法:輸入待查詢的身份證號碼,即可得到這個號碼持有人的住址,生日,性別等資訊。並能檢驗該號碼的真實性。
【作者宣告】:本人只是對Crack感興趣,沒有其它目的。
【破解工具】:Ollydbg1.09
中文版 TRW2000 V1.23
―――――――――――――――――――――――――――――
【過
程】:
這個軟體防Ollydbg並且加了殼,我沒有脫成功,所以就用TRW2000的萬能斷點找註冊碼計算的入口然後用Ollydbg的附加功能跟蹤程式,填註冊資訊,使用者名稱:fxyang
試驗碼:7894561230123456 跟蹤來到這裡:
004A120C
PUSH EBP
004A120D PUSH 4A128A
004A1212
PUSH DWORD PTR FS:[EAX]
004A1215 MOV
DWORD PTR FS:[EAX], ESP
004A1218 LEA EDX, DWORD PTR SS:[EBP-1C]
004A121B
MOV EAX, DWORD PTR DS:[EBX+2F8]
004A1221 CALL
004388D8
; IDCard.004388D8
004A1226 MOV
EAX, DWORD PTR SS:[EBP-1C] ; EAX<--00E5A784,(ASCII"7894561230123456")
004A1229
LEA EDX, DWORD PTR SS:[EBP-18]
004A122C CALL
0049BBAC
; <--檢查註冊碼前部分的正確性
====>F8
--------檢查註冊碼前部分的正確性---------
|
0049BBBB
PUSH ECX
0049BBBC PUSH EBX
0049BBBD
PUSH ESI
0049BBBE PUSH EDI
0049BBBF
MOV DWORD PTR SS:[EBP-8], E>
0049BBC2 MOV
DWORD PTR SS:[EBP-4], E>; EAX<--00E5A784,(ASCII"7894561230123456")
0049BBC5
MOV EAX, DWORD PTR SS:[EBP->; EAX<--00E5A784,(ASCII"7894561230123456")
0049BBC8
CALL 00404950
; IDCard.00404950
0049BBCD XOR EAX, EAX
0049BBCF
PUSH EBP
0049BBD0 PUSH 49BD33
0049BBD5
PUSH DWORD PTR FS:[EAX]
0049BBD8 MOV
DWORD PTR FS:[EAX], ESP
0049BBDB XOR EAX, EAX
0049BBDD
PUSH EBP
0049BBDE PUSH 49BD06
0049BBE3
PUSH DWORD PTR FS:[EAX]
0049BBE6 MOV
DWORD PTR FS:[EAX], ESP
0049BBE9 PUSH 6FB2
0049BBEE LEA
EAX, DWORD PTR SS:[EBP->
0049BBF1 PUSH EAX
0049BBF2
LEA EAX, DWORD PTR SS:[EBP->
0049BBF5 PUSH
EAX
0049BBF6 MOV ECX, 9
<---取位的長度(9)
0049BBFB MOV
EDX, 1
0049BC00 MOV EAX, DWORD PTR SS:[EBP->;
EAX<--00E5A784,(ASCII"7894561230123456")
0049BC03 CALL
004049C0 ; <--取試驗碼的前9位
0049BC08
MOV EAX, DWORD PTR SS:[EBP->; EAX=00D955C4,(ASCII "789456123")
0049BC0B
LEA EDX, DWORD PTR SS:[EBP->
0049BC0E CALL
0049BAF4 ; <--把上面的串每3個一組變換成16進位制
====>F8
--------把上面的串每3個一組變換成16進位制---------
|
0049BAF4
PUSH EBP
0049BAF5 MOV EBP, ESP
0049BAF7
PUSH 0
0049BAF9 PUSH 0
0049BAFB
PUSH 0
0049BAFD PUSH EBX
0049BAFE
PUSH ESI
0049BAFF MOV ESI, EDX
0049BB01
MOV DWORD PTR SS:[EBP-4], EAX ;
EAX=00D955C4,(ASCII "789456123")
0049BB04 MOV
EAX, DWORD PTR SS:[EBP-4] ; EAX=00D955C4,(ASCII
"789456123")
0049BB07 CALL 00404950
; IDCard.00404950
0049BB0C
XOR EAX, EAX
0049BB0E PUSH EBP
0049BB0F
PUSH 49BB9C
0049BB14 PUSH DWORD PTR
FS:[EAX]
0049BB17 MOV DWORD PTR FS:[EAX], ESP
0049BB1A
MOV EBX, 1
0049BB1F MOV EAX, ESI
0049BB21
CALL 004044B0
; IDCard.004044B0
0049BB26 MOV
EAX, DWORD PTR SS:[EBP-4] ; EAX=00D955C4,(ASCII
"789456123")
0049BB29 CALL 00404768
; IDCard.00404768
0049BB2E
MOV ECX, 3
; ECX=3
0049BB33 CDQ
0049BB34
IDIV ECX
0049BB36 TEST EDX, EDX
0049BB38
JNZ SHORT 0049BB81
; IDCard.0049BB81
0049BB3A JMP
SHORT 0049BB75
; IDCard.0049BB75
0049BB3C LEA EAX, DWORD PTR SS:[EBP-C]
0049BB3F
PUSH EAX
0049BB40 MOV ECX, 3
0049BB45
MOV EDX, EBX
0049BB47 MOV EAX, DWORD
PTR SS:[EBP-4] ; EAX=00D955C4,(ASCII "789456123")
0049BB4A
CALL 004049C0
; <--取前三位 ("789")
0049BB4F
MOV EAX, DWORD PTR SS:[EBP-C] ;
EAX<--00E5A730,(ASCII"789")
0049BB52 CALL 00408A84
; <--把"789"變成16進位制值"315"
=====>F8
-----把"789"變成16進位制值"315"------
|
004030C2
SUB BL, 30
004030C5 CMP BL, 9
004030C8
JA SHORT 004030EF
; IDCard.004030EF
004030CA CMP
EAX, EDI
004030CC JA SHORT 004030EF
; IDCard.004030EF
004030CE
LEA EAX, DWORD PTR DS:[EAX+EAX*4]
004030D1 ADD
EAX, EAX
004030D3 ADD EAX, EBX
004030D5
MOV BL, BYTE PTR DS:[ESI]
004030D7 INC
ESI
004030D8 TEST BL, BL
004030DA JNZ
SHORT 004030C2
<--這段迴圈把"789"變成16進位制值"315"
-----------------------------------------
繼續:
|
0049BB57
MOV EDX, EAX
; EDX=EAX=315
0049BB59 LEA
EAX, DWORD PTR SS:[EBP-8]
0049BB5C CALL 00404690
; IDCard.00404690
0049BB61 MOV EDX, DWORD PTR SS:[EBP-8]
0049BB64
MOV EAX, ESI
0049BB66 CALL 00404770
; IDCard.00404770
0049BB6B ADD EBX, 3
0049BB6E
JNO SHORT 0049BB75
; IDCard.0049BB75
0049BB70 CALL 00403684
; IDCard.00403684
0049BB75 MOV EAX, DWORD PTR SS:[EBP-4]
; EAX=00D955C4,(ASCII "789456123")
0049BB78
CALL 00404768
; IDCard.00404768
0049BB7D CMP
EBX, EAX
0049BB7F JL SHORT 0049BB3C
; IDCard.0049BB3C
0049BB81
XOR EAX, EAX
0049BB83 POP EDX
0049BB84
POP ECX
0049BB85 POP ECX
0049BB86
MOV DWORD PTR FS:[EAX], EDX
0049BB89 PUSH
49BBA3
0049BB8E LEA EAX, DWORD PTR SS:[EBP-C]
0049BB91
MOV EDX, 3
0049BB96 CALL 004044D4
; IDCard.004044D4
0049BB9B RETN
-----------------------------------------
繼續:
|
0049BC13
MOV EAX, DWORD PTR SS:[EBP->
0049BC16 MOV
ECX, 0C891 ; ECX=0C891
0049BC1B
MOV EDX, 3D0
; EDX=3D0
0049BC20 CALL 0049BA54
; <--用上面的值計算出新值
===>F8
-------用上面的值計算出新值--------
|
0049BA54
PUSH EBP
0049BA55 MOV EBP, ESP
0049BA57
ADD ESP, -0C
0049BA5A PUSH EBX
0049BA5B
PUSH ESI
0049BA5C PUSH EDI
0049BA5D
XOR EBX, EBX
0049BA5F MOV DWORD PTR
SS:[EBP-C], EBX
0049BA62 MOV DWORD PTR SS:[EBP-4], ECX
0049BA65
MOV ESI, EDX
; EDX=3D0=ESI
0049BA67 MOV
EDI, EAX
0049BA69 XOR EAX, EAX
0049BA6B PUSH
EBP
0049BA6C PUSH 49BAE2
0049BA71 PUSH
DWORD PTR FS:[EAX]
0049BA74 MOV DWORD PTR
FS:[EAX], ESP
0049BA77 MOV EAX, DWORD PTR SS:[EBP+8]
0049BA7A
CALL 004044B0
; IDCard.004044B0
0049BA7F MOV
EAX, EDI
0049BA81 CALL 00404768
; IDCard.00404768
0049BA86
TEST AL, AL
0049BA88 JBE SHORT 0049BACC
; IDCard.0049BACC
0049BA8A
MOV BYTE PTR SS:[EBP-5], AL ;
AL=3
0049BA8D MOV BL, 1
; BL=1
0049BA8F
LEA EAX, DWORD PTR SS:[EBP-C]
0049BA92 XOR
EDX, EDX
0049BA94 MOV DL, BL
; DL=BL=1
0049BA96
MOV DL, BYTE PTR DS:[EDI+EDX-1] ;
DL=DS:[EDI+EDX-1]=15 (315)|=C8 (1C8)|=7B (7B)
0049BA9A MOV
ECX, ESI
; ECX=ESI=3D0|=030D8C67|=50FA1F51
0049BA9C SHR
ECX, 8
; ECX=3|=30D8C=50FA1F
0049BA9F XOR
DL, CL
; DL=15 XOR 03=16|=C8 XOR 8C=44|=7B XOR 1F=64
0049BAA1 CALL
00404690
; IDCard.00404690
0049BAA6 MOV
EDX, DWORD PTR SS:[EBP-C] ; EDX=00D9AFD8<--("16")
0049BAA9
MOV EAX, DWORD PTR SS:[EBP+8]
0049BAAC CALL
00404770
; IDCard.00404770
0049BAB1 MOV
EAX, DWORD PTR SS:[EBP+8]
0049BAB4 XOR EAX, EAX
0049BAB6
MOV AL, BL
; BL=1
0049BAB8 MOVZX
EAX, BYTE PTR DS:[EDI+EAX-1]
; EAX=DS:[EDI+EDX-1]=15 (315)|=C8 (1C8)|=7B (7B)
0049BABD ADD ESI, EAX
; ESI=3D0+15=3E5|=030D8C67+C8=030D8D2F|=50FA1F51+7B=50FA1FCC
0049BABF IMUL ESI, DWORD PTR SS:[EBP-4]
; ESI=3E5*C891=030D1CB5|=030D8D2F*C891=50F9AF9F|=50FA1FCC*C891=4683628C
0049BAC3 ADD ESI, DWORD PTR SS:[EBP+C]
; ESI=030D1CB5+6FB2=030D8C67|=50F9AF9F+6FB2=50FA1F51|=4683628C+6FB2=4683D23E
0049BAC6
INC EBX
; EBX=1++
0049BAC7 DEC
BYTE PTR SS:[EBP-5] ;
SS:[00`12F847]=03--
0049BACA JNZ SHORT 0049BA8F
; IDCard.0049BA8F
0049BACC
XOR EAX, EAX
0049BACE POP EDX
0049BACF
POP ECX
0049BAD0 POP ECX
0049BAD1
MOV DWORD PTR FS:[EAX], EDX
0049BAD4 PUSH
49BAE9
0049BAD9 LEA EAX, DWORD PTR SS:[EBP-C]
0049BADC
CALL 004044B0
; IDCard.004044B0
0049BAE1 RETN
-----------------------------------------
繼續:
|
0049BC25
MOV EAX, DWORD PTR SS:[EBP->; EAX=00D9A910,(ASCII "867")
0049BC28
CALL 00408A84
; <--比較計算值的正確性
====>F8
------比較計算值的正確性--------
|
00403070
PUSH EBX
00403071 PUSH ESI
00403072
PUSH EDI
00403073 MOV ESI, EAX
;
EAX<--00E5A730,(ASCII"789")
00403075 PUSH EAX
00403076
TEST EAX, EAX
00403078 JE SHORT
004030E6 ;
IDCard.004030E6
0040307A XOR EAX, EAX
0040307C XOR
EBX, EBX
0040307E MOV EDI, 0CCCCCCC
00403083
MOV BL, BYTE PTR DS:[ESI]
; BL=DS:[ESI]=37 ||||=16(1)
00403085 INC ESI
00403086
CMP BL, 20
00403089 JE SHORT
00403083 ;
IDCard.00403083
0040308B MOV CH, 0
0040308D CMP
BL, 2D
00403090 JE SHORT 004030F4
; IDCard.004030F4
00403092
CMP BL, 2B
00403095 JE SHORT
004030F6 ;
IDCard.004030F6
00403097 CMP BL, 24
0040309A JE
SHORT 004030FB
; IDCard.004030FB
0040309C CMP BL, 78
0040309F
JE SHORT 004030FB
; IDCard.004030FB
004030A1 CMP
BL, 58
004030A4 JE SHORT 004030FB
; IDCard.004030FB
004030A6
CMP BL, 30
004030A9 JNZ SHORT 004030BE
; IDCard.004030BE
004030AB
MOV BL, BYTE PTR DS:[ESI]
004030AD INC
ESI
004030AE CMP BL, 78
004030B1 JE
SHORT 004030FB
; IDCard.004030FB
004030B3 CMP BL, 58
004030B6 JE
SHORT 004030FB
; IDCard.004030FB
004030B8 TEST BL, BL
004030BA
JE SHORT 004030DC
; IDCard.004030DC
004030BC JMP
SHORT 004030C2
; IDCard.004030C2
004030BE TEST BL, BL
004030C0
JE SHORT 004030EF
\
004030C2 SUB BL, 30
|
004030C5 CMP BL, 9
|<--正確性效驗
004030C8
JA SHORT 004030EF
|
004030CA CMP EAX, EDI
|
004030CC
JA SHORT 004030EF
/
說明:效驗的方法是比較上面計算的值是不是數字
------------------------------------
|
0049BC2D
MOV EBX, EAX
; EBX=EAX=363
0049BC2F PUSH 6FB2
0049BC34 LEA
EAX, DWORD PTR SS:[EBP->
0049BC37 PUSH EAX
0049BC38
LEA EAX, DWORD PTR SS:[EBP->
0049BC3B PUSH
EAX
0049BC3C MOV ECX, 0F
; <---取位的長度(15),改試驗碼位30位繼續
0049BC41 MOV
EDX, 0A
0049BC46 MOV EAX, DWORD PTR SS:[EBP->;
EAX<--00E49794,(ASCII"315359390147258")
0049BC49 CALL
004049C0 ; <--取餘下的試驗碼的前15位"315359390315359"
0049BC4E
MOV EAX, DWORD PTR SS:[EBP->; EAX<--01C19570,(ASCII
"315359390315359")
0049BC51 LEA EDX, DWORD PTR
SS:[EBP->
0049BC54 CALL 0049BAF4
<--把上面的串每3個一組變換成16進位制
0049BC59 MOV
EAX, DWORD PTR SS:[EBP->
0049BC5C MOV
ECX, 0C891
0049BC61 MOV EDX, 3D0
0049BC66 CALL
0049BA54 ;
<--用上面的值計算出新值
0049BC6B MOV EAX, DWORD PTR SS:[EBP->;
EAX=00D9A910,(ASCII "86725")
0049BC6E CALL 00408A84
<--比較計算值的正確性
;說明:計算和比較的方法同上
0049BC73
MOV ESI, EAX
0049BC75 PUSH 6FB2
0049BC7A
LEA EAX, DWORD PTR SS:[EBP->
0049BC7D PUSH
EAX
0049BC7E LEA EAX, DWORD PTR SS:[EBP->
0049BC81
PUSH EAX
0049BC82 MOV ECX, 0F
; <---取位的長度(15),改試驗碼位40位繼續
0049BC87
MOV EDX, 19
0049BC8C MOV EAX, DWORD
PTR SS:[EBP->
0049BC8F CALL 004049C0
; IDCard.004049C0
0049BC94 MOV
EAX, DWORD PTR SS:[EBP->
0049BC97 LEA
EDX, DWORD PTR SS:[EBP->
0049BC9A CALL 0049BAF4
<--把上面的串每3個一組變換成16進位制
0049BC9F
MOV EAX, DWORD PTR SS:[EBP->
0049BCA2 MOV
ECX, 0C891
0049BCA7 MOV EDX, 3D0
0049BCAC CALL
0049BA54 ;
<--用上面的值計算出新值
0049BCB1 MOV EAX, DWORD PTR SS:[EBP->;
EAX=00D9A910,(ASCII "86725")
0049BCB4 CALL 00408A84
<--比較計算值的正確性
;說明:計算和比較的方法同上
0049BCB9
MOV EDI, EAX
; EAX=152C5=EDI
0049BCBB PUSH EDI
0049BCBC
MOV EAX, DWORD PTR SS:[EBP->
0049BCBF PUSH
EAX
0049BCC0 LEA EAX, DWORD PTR SS:[EBP->
0049BCC3
PUSH EAX
0049BCC4 MOV EAX, DWORD PTR
SS:[EBP->
; EAX<--01C13B94 ASCII "315359390315359390438360315359390438360123456789"
0049BCC7
CALL 00404768
; IDCard.00404768
0049BCCC MOV ECX, EAX
; ECX=30
0049BCCE SUB
ECX, 27
0049BCD1 JNO SHORT 0049BCD8
; IDCard.0049BCD8
0049BCD3 CALL
00403684 ; IDCard.00403684
0049BCD8
MOV EDX, 28
0049BCDD MOV EAX, DWORD
PTR SS:[EBP->
0049BCE0 CALL 004049C0
; <--取使用者名稱的效驗位--長度=使用者名稱*3,改試驗碼位57位繼續
0049BCE5 MOV EAX, DWORD PTR SS:[EBP->
; EAX<--00D955C4,(ASCII "123456789147258369")<--使用者名稱的效驗位
0049BCE8
LEA EDX, DWORD PTR SS:[EBP->
0049BCEB CALL
0049BAF4 <--把上面的串每3個一組變換成16進位制
0049BCF0
MOV EAX, DWORD PTR SS:[EBP->
0049BCF3 MOV
ECX, ESI
0049BCF5 MOV EDX, EBX
0049BCF7 CALL
0049BA54 ;
<--用上面的值計算出新值
說明:計算的方法同上
0049BCFC
XOR EAX, EAX
0049BCFE POP EDX
0049BCFF
POP ECX
0049BD00 POP ECX
0049BD01
MOV DWORD PTR FS:[EAX], EDX
0049BD04 JMP
SHORT 0049BD10 ; IDCard.0049BD10
0049BD06
JMP 00403C24
; IDCard.00403C24
0049BD0B CALL 00403F8C
; IDCard.00403F8C
0049BD10
XOR EAX, EAX
0049BD12 POP EDX
0049BD13
POP ECX
0049BD14 POP ECX
0049BD15
MOV DWORD PTR FS:[EAX], EDX
0049BD18 PUSH
49BD3A
0049BD1D LEA EAX, DWORD PTR SS:[EBP->
0049BD20
MOV EDX, 0B
0049BD25 CALL 004044D4
; IDCard.004044D4
0049BD2A
LEA EAX, DWORD PTR SS:[EBP->
0049BD2D CALL
004044B0 ; IDCard.004044B0
0049BD32
RETN
-----------------------------------------
繼續:
|
004A1231
MOV EAX, DWORD PTR SS:[EBP-18]
004A1234 PUSH
EAX
004A1235 LEA EDX, DWORD PTR SS:[EBP-20]
004A1238
MOV EAX, DWORD PTR DS:[EBX+2F4]
004A123E CALL
004388D8
004A1243 MOV EDX, DWORD PTR SS:[EBP-20]
; EDX<--01C19570,(ASCII "fxyang")
004A1246 POP
EAX
004A1247 CALL 004048AC
; <--關鍵的比較
====>F8
------關鍵的比較-------
|
004048AC
PUSH EBX
004048AD PUSH ESI
004048AE
PUSH EDI
004048AF MOV ESI, EAX
; ESI<--=0034A078 <---使用者名稱效驗位計算的值--引數
004048B1 MOV EDI, EDX
; EDX<--01C19570,(ASCII "fxyang")<--引數--使用者名稱
004048B3
CMP EAX, EDX
004048B5 JE 0040494A
; IDCard.0040494A
004048BB TEST ESI, ESI
004048BD
JE SHORT 00404927
; IDCard.00404927
004048BF TEST
EDI, EDI
004048C1 JE SHORT 0040492E
; IDCard.0040492E
004048C3
MOV EAX, DWORD PTR DS:[ESI-4]
004048C6 MOV
EDX, DWORD PTR DS:[EDI-4]
004048C9 SUB EAX, EDX
004048CB
JA SHORT 004048CF
; IDCard.004048CF
004048CD ADD
EDX, EAX
004048CF PUSH EDX
004048D0 SHR
EDX, 2
004048D3 JE SHORT 004048FB
; IDCard.004048FB
004048D5
MOV ECX, DWORD PTR DS:[ESI]
004048D7 MOV
EBX, DWORD PTR DS:[EDI]
004048D9 CMP ECX, EBX
004048DB
JNZ SHORT 00404935
; IDCard.00404935
004048DD DEC
EDX
004048DE JE SHORT 004048F5
; IDCard.004048F5
004048E0 MOV
ECX, DWORD PTR DS:[ESI+4]
004048E3 MOV EBX,
DWORD PTR DS:[EDI+4]
004048E6 CMP ECX, EBX
004048E8
JNZ SHORT 00404935
; IDCard.00404935
004048EA ADD
ESI, 8
004048ED ADD EDI, 8
004048F0 DEC
EDX
004048F1 JNZ SHORT 004048D5
; IDCard.004048D5
004048F3 JMP
SHORT 004048FB
; IDCard.004048FB
004048F5 ADD ESI, 4
004048F8
ADD EDI, 4
004048FB POP EDX
004048FC
AND EDX, 3
004048FF JE SHORT
00404923 ;
IDCard.00404923
00404901 MOV ECX, DWORD PTR DS:[ESI]
; ECX<--DS:[ESI]=0034A078 <---使用者名稱效驗位計算的值
00404903 MOV EBX, DWORD PTR DS:[EDI]
; EBX<--DS:[EDI]=61797866 <---使用者名稱的hex值
00404905
CMP CL, BL \
00404907
JNZ SHORT 0040494A |
00404909 DEC EDX
|
0040490A JE
SHORT 00404923 |<--逐位比較
0040490C CMP
CH, BH |
0040490E JNZ
SHORT 0040494A |
00404910 DEC EDX
|
00404911 JE
SHORT 00404923 /
00404913 AND EBX, 0FF0000
00404919
AND ECX, 0FF0000
0040491F CMP ECX,
EBX
00404921 JNZ SHORT 0040494A
00404923 ADD EAX, EAX
00404925
JMP SHORT 0040494A
00404927 MOV EDX, DWORD PTR DS:[EDI-4]
0040492A
SUB EAX, EDX
0040492C JMP SHORT 0040494A
0040492E MOV
EAX, DWORD PTR DS:[ESI-4]
00404931 SUB EAX,
EDX
00404933 JMP SHORT 0040494A
00404935 POP EDX
00404936
CMP CL, BL
00404938 JNZ SHORT 0040494A
0040493A CMP
CH, BH
0040493C JNZ SHORT 0040494A
0040493E SHR
ECX, 10
00404941 SHR EBX, 10
00404944 CMP
CL, BL
00404946 JNZ SHORT 0040494A
00404948 CMP CH, BH
0040494A POP
EDI
0040494B POP ESI
0040494C POP
EBX
0040494D RETN
--------------------------
繼續:
|
004A124C
JNZ SHORT 004A1264
; IDCard.004A1264
004A124E MOV
EAX, 4A1358
004A1253 CALL 00431CFC
; IDCard.00431CFC
004A1258
MOV EAX, DWORD PTR DS:[4AFE14]
004A125D CALL
00454E44
; IDCard.00454E44
004A1262 JMP
SHORT 004A1280
; IDCard.004A1280
004A1264 MOV ECX, 4A1378
004A1269
MOV EDX, 4A1348
; ASCII "regcode"
004A126E
MOV EAX, DWORD PTR SS:[EBP-4]
004A1271 CALL
004A0A40
; IDCard.004A0A40
004A1276 MOV
EAX, 4A1384
004A127B CALL 00431CFC
; IDCard.00431CFC
004A1280
XOR EAX, EAX
004A1282 POP EDX
004A1283
POP ECX
004A1284 POP ECX
004A1285
MOV DWORD PTR FS:[EAX], EDX
004A1288 JMP
SHORT 004A12B0
; IDCard.004A12B0
004A128A JMP 00403C24
; IDCard.00403C24
004A128F
MOV ECX, 4A1378
004A1294 MOV EDX, 4A1348
;
ASCII "regcode"
004A1299 MOV EAX, DWORD PTR SS:[EBP-4]
004A129C
CALL 004A0A40
; IDCard.004A0A40
004A12A1 MOV
EAX, 4A1384
004A12A6 CALL 00431CFC
;
IDCard.00431CFC
004A12AB CALL 00403F8C
; IDCard.00403F8C
004A12B0
XOR EAX, EAX
004A12B2 POP EDX
004A12B3
POP ECX
004A12B4 POP ECX
004A12B5
MOV DWORD PTR FS:[EAX], EDX
004A12B8 PUSH
4A12D5
004A12BD MOV EAX, DWORD PTR SS:[EBP-4]
004A12C0
CALL 004A0734
; IDCard.004A0734
004A12C5 MOV
EAX, DWORD PTR SS:[EBP-4]
004A12C8 CALL 00403744
; IDCard.00403744
004A12CD RETN
===============================================================================
到這裡演算法跟蹤分析已完成,總結一下.
條件--註冊碼的長度=39位+使用者名稱位數*3
註冊碼的計算方法:
1.分三次取試驗碼的前39位(這部分與使用者名稱無關),效驗它的正確性
即透過計算的值是數字就正確.所以只有跟蹤到一個正確值就能用於
任何一個使用者名稱.
2.後面的使用者名稱位數*3位才是註冊碼與使用者名稱的效驗位.下面來說說計算過程
1.)取試驗碼的效驗位,然後3個一組變換成16進位制值
2.)取每組16進位制值的低位元組進入下步計算(所以使用者名稱的效驗碼不止一個)
3.)第一組值 XOR 03 =使用者名稱第一位的hex值
4.)第一組值+3D0(固定值)的值*C89(固定值),得到一個新值+6FB2(固定值)
5.)用上面值的第三位元組 XOR 第二組值=使用者名稱的第二位
6.)用第四步計算的值+第二組的值然後再次進行第四步第五步計算
直到計算完
by fxyang[OCN][BCG]
2003.4.24
相關文章
- JavaScript身份證真偽查驗介面廠家有哪些?身份證查詢真偽2024-09-03JavaScript
- 資料庫學習:查詢新身份證(18位)的校驗位(轉)2007-08-11資料庫
- javascript身份證號碼校驗2019-02-16JavaScript
- 身份證校驗碼的計算方法2014-01-27
- 18位身份證校驗演算法2009-02-23演算法
- 身份證歸屬地查詢2013-01-08
- 7-3 查驗身份證2024-03-09
- JS校驗身份證號的合法性2019-02-22JS
- 用 python 製作全國身份證號驗證及查詢系統2020-04-04Python
- PHP校驗15位和18位身份證號2018-11-07PHP
- 身份證號碼校驗位的計算方式2009-02-18
- NET Core 多身份校驗與策略模式2024-08-30模式
- java 實現從15位~18位的身份證號碼轉換,校驗中國大陸公民身份證、香港居民身份證、澳門身份證和臺灣身份證。2013-08-18Java
- javascript 驗證身份證2016-10-12JavaScript
- 簡聊 Session 與 Token 身份驗證2018-12-24Session
- 用WPS格式轉換工具校驗身份證號碼2017-07-12
- 在Delphi中使用正規表示式校驗身份證號2024-08-15
- WEB身份驗證2007-04-05Web
- 身份證驗證工具類2022-01-17
- 身份證如何查驗真偽?C#身份證二要素、三要素介面整合2024-07-24C#
- Python 使用xpath爬蟲查詢身份證資訊和手機號資訊並寫入Excel表格2018-11-02Python爬蟲Excel
- PAT-B 1031 查驗身份證 【字串】2019-02-23字串
- rpm安裝、升級、查詢與安全驗證2017-11-22
- 身份證字串檢查2007-08-07字串
- Oracle的身份驗證2014-03-05Oracle
- PHP 驗證身份證號碼2019-07-25PHP
- 中國身份證號驗證庫2021-01-26
- C++身份證號驗證2020-11-14C++
- C#驗證身份證號2009-02-27C#
- 精準實現身份證號碼格式校驗程式碼例項2017-03-26
- L1-016 查驗身份證 python2024-06-29Python
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證API2024-04-16C++API
- 作業系統身份驗證和口令檔案身份驗證總結2013-11-27作業系統
- js正則驗證身份證號2020-11-14JS
- PHP 身份證精確匹配驗證2017-05-19PHP
- 身份證號碼驗證系統2017-02-19
- 身份證號碼之js驗證2017-12-04JS
- oracle常見身份驗證2015-04-20Oracle