Re: [請益] 要如何繞過Keypro的驗證?
: → iman00b:就算你證明是他錯了,也是在教他而已...值得嗎? 03/08 08:37
: → iman00b:送你一句話: 使君負三百,教其凡夫俗子一生不識太行山. 03/08 08:38
=============================================================================
iman00b 果真很有學問, 讓大家知道一下太行山典故.
一書生帶了他的僕人進太行山,僕人見道上碑字,誤讀為“太形山”。書生笑
道:“杭也,非形也。”僕人固執不信。於是,二人約定,路上遇見識者,便
向他請教,誰輸了罰錢一貫。行數里,至村學,問老儒,老儒對書生說:“形
也,非杭也。”僕人得錢,找個地方買酒喝去了。書生意不能平,回來找到老
儒,問:“先生何以認同蠢僕之言?”老儒大笑:“公何等不解事,一貫錢細
事耳,好教他一生不識太行山。”
呵呵,一笑。
===================================================================
2.2.2. Prefetch Instruction Queue (PIQ) manipulation:
This method is a bit similar to (1.3), but it fools ANY debugger,
or any other process that executes one operation at a time. The PIQ
is an area within the CPU, that pre-fethces, ie. takes in advance,
instructions from memory, so when they need to be executed, it
would take less time to get them, since they are already in the CPU.
The PIQ length ranges from 6 or 4 in old computers, up to as high as
25 in new ones. What the trick does is change the FOLLOWING opcode
to something meaningless. If you are debugging, then the change will
take place BEFORE the instructions is executed or fetched. If you
run the program NORMALLY, by the time you change the opcode, it will
have already been fetched.
Example:
CS:0100 B97502 MOV CX,0275
CS:0103 BE9001 MOV SI,0190
CS:0106 89F7 MOV DI,SI
CS:0108 AC LODSB
CS:0109 C7060F012406 MOV Word Ptr [010F],0624
CS:010F 3473 XOR AL,73
CS:0111 AA STOSB
CS:0112 C7060F012406 MOV Word Ptr [010F],0624
CS:0118 E2EE LOOP 0108
Watch this:
CS:010F 2406 AND AL,06
: 這個程式的徵結根本就在 本身是個 self-modified code 的程式,
: xor al,73 不會被執行而是代以 and al,06 這個指令
: 不管是 single step multiple trace 或是只設斷點在 011a , 快跑完loop,
: 搬移的資料區事先全設ff, 事後都是同樣結果 06 .
假如 prefetch queue 發生作用, 那是 xor al,73 已經被拿到 cpu 內不會
被 modified code 改到, 做的動作應該還是 xor al,73
這招想說的是一步一步做, 跟快速做, 結果會不同. 這是假設 mov word[010f],0624
在快做的時候會覆蓋不了已經在 cpu 內的 010f 指令 xor al,73
很不幸, 在 vm86 mode 或 DOS 7.1 下執行 debug , 都沒有因 prefetch 而不發生
無法 self modify code 的效果. 我的老爺 cpu 是 P4 2.4GHz.
這是實測執行的結果.
=================================================
-u100
14CC:0100 B97502 MOV CX,0275
14CC:0103 BE9001 MOV SI,0190
14CC:0106 89F7 MOV DI,SI
14CC:0108 AC LODSB
14CC:0109 C7060F012406 MOV WORD PTR [010F],0624
14CC:010F 3473 XOR AL,73
14CC:0111 AA STOSB
14CC:0112 C7060F012406 MOV WORD PTR [010F],0624
14CC:0118 E2EE LOOP 0108
14CC:011A 90 NOP
14CC:011B F1 DB F1
14CC:011C F1 DB F1
14CC:011D 0000 ADD [BX+SI],AL
14CC:011F 0000 ADD [BX+SI],AL
-f190 600 ff
-g=100,11a
AX=0006 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0405 DI=0405
DS=14CC ES=14CC SS=14CC CS=14CC IP=011A NV UP EI PL NZ NA PE NC
14CC:011A 90 NOP
-d190 19f
14CC:0190 06 06 06 06 06 06 06 06-06 06 06 06 06 06 06 06 ................
========================================================================
哈! 我的 P4 讓人一生不識太行山 !!
※ 編輯: ggg12345 來自: 140.115.4.90 (03/09 00:50)
推
03/09 01:28, , 1F
03/09 01:28, 1F
→
03/09 12:11, , 2F
03/09 12:11, 2F
→
03/09 13:22, , 3F
03/09 13:22, 3F
推
03/09 13:28, , 4F
03/09 13:28, 4F
→
03/09 13:59, , 5F
03/09 13:59, 5F
→
03/09 14:00, , 6F
03/09 14:00, 6F
推
03/09 14:30, , 7F
03/09 14:30, 7F
→
03/09 21:27, , 8F
03/09 21:27, 8F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 6 篇):