一篇破解入門 (7千字)
軟體WinImp1.11(主程式winimp32.exe 大小463,872位元組)
該軟體是類似winzip的壓縮軟體,支援的格式較多,壓縮率也很高,並且軟體本身有自交驗功能。
本人是在該軟體報警後,發現機器中有病毒的。
工具:trw2000-1.22
過程如下:
輸入如下內容 name:1234 key1:12345678 key2:12345678
用BPX HMEMCPY下斷點,攔截後BC *,PMODULE後進入下面程式
0167:00426013 PUSH EBX
0167:00426014 PUSH ECX
0167:00426015 PUSH EDX
0167:00426016 PUSH ESI
0167:00426017 PUSH EDI
0167:00426018 ENTER 24,00
0167:0042601C MOV ESI,EAX
0167:0042601E PUSH DWORD 0100
0167:00426023 PUSH DWORD 00453C60
0167:00426028 PUSH BYTE +65
0167:0042602A PUSH EAX
0167:0042602B XOR EBX,EBX
0167:0042602D CALL NEAR [CS:0043D7A0] <----
get name code
0167:00426034 MOV DWORD [EBP-04],00
0167:0042603B MOV EAX,00453C60
0167:00426040 JMP SHORT 00426046
0167:00426042 AND EBX,BYTE +03
0167:00426045 INC EAX
0167:00426046 CMP BYTE [EAX],00
0167:00426049 JZ 00426067
0167:0042604B CMP BYTE [EAX],20
0167:0042604E JZ 00426042
0167:00426050 CMP BYTE [EAX],2E
0167:00426053 JZ 00426042
0167:00426055 MOVZX EDI,BYTE [EAX]
0167:00426058 MOV EDX,EBX
0167:0042605A MOV CL,[EDI+00451110]
0167:00426060 INC EBX
0167:00426061 ADD [EDX+EBP-04],CL
<---- move to [005cf740]
1234<->31323334
0167:00426065 JMP SHORT 00426042
0167:00426067 PUSH BYTE +0C
0167:00426069 LEA EAX,[EBP-24]
0167:0042606C PUSH EAX
0167:0042606D PUSH BYTE +66
0167:0042606F PUSH ESI
0167:00426070 MOV EBX,10
0167:00426075 CALL NEAR [CS:0043D7A0] <----
get key1 code
0167:0042607C LEA EAX,[EBP-24]
0167:0042607F XOR EDX,EDX
0167:00426081 CALL 00437454
<---- 對程式碼的檢測,並送入[005cf738]
12345678<->78563412
0167:00426086 PUSH BYTE +0C
0167:00426088 MOV [EBP-0C],EAX
0167:0042608B LEA EAX,[EBP-24]
0167:0042608E PUSH EAX
0167:0042608F PUSH BYTE +67
0167:00426091 PUSH ESI
0167:00426092 MOV DWORD [EBP-08],00
0167:00426099 MOV EBX,10
0167:0042609E CALL NEAR [CS:0043D7A0] <----
get key2 code
0167:004260A5 LEA EAX,[EBP-24]
0167:004260A8 XOR EDX,EDX
0167:004260AA CALL 00437454
<---- 對程式碼的檢測,並送入[005cf73c]
12345678<->78563412
0167:004260AF MOV EDX,[EBP-0C]
0167:004260B2 MOV [EBP-08],EAX
0167:004260B5 CMP EDX,01000000
0167:004260BB JC 004260D3
0167:004260BD CMP EAX,01000000
0167:004260C2 JC 004260D3
0167:004260C4 MOV EAX,EDX
0167:004260C6 MOV EDX,[EBP-08]
0167:004260C9 CALL 004262A7
<---- main proc
0167:004260CE CMP EAX,[EBP-04]
0167:004260D1 JZ 004260EB
進入main proc
0167:004262A7 PUSH EBX
0167:004262A8 PUSH ECX
0167:004262A9 PUSH ESI
0167:004262AA MOV ECX,EAX
0167:004262AC MOV EBX,EDX
0167:004262AE MOV EDX,[0044A764]
0167:004262B4 CALL 0042622D
<-------1
0167:004262B9 MOV ESI,EAX
0167:004262BB MOV EDX,EBX
0167:004262BD MOV EBX,20
0167:004262C2 MOV EAX,ECX
0167:004262C4 XOR ECX,ECX
0167:004262C6 CALL 00436B7E
<-------2
0167:004262CB XOR EAX,ESI
<---- 這裡是將key1的code進行一系列運算後的值(esi)
與key2的code(eax)異或,之後與name的code比較
這樣可以簡單的作出一個序號產生器
NAME XOR 199B0737(12345678<->KEY1)=KEY2
34333231(1234) XOR 199B0737=2DA83506
name:1234
key1:12345678
key2:2da83506
0167:004262CD POP ESI
0167:004262CE POP ECX
0167:004262CF POP EBX
0167:004262D0 RET
注意:key1,key2的長度是name的2倍。如果有興趣,
可以進入上面的1,2中,分析一下,作出一個序號產生器。
--------------------------------------------------
1:
0167:0042622D PUSH EBX
0167:0042622E PUSH ECX
0167:0042622F PUSH ESI
0167:00426230 PUSH EDI
0167:00426231 ENTER 04,00
0167:00426235 PUSH EDX
0167:00426236 TEST BYTE [EBP-08],01
0167:0042623A JNZ 00426243
0167:0042623C MOV ECX,01
0167:00426241 JMP SHORT 00426245
0167:00426243 MOV ECX,EAX
0167:00426245 MOV DWORD [EBP-04],02
0167:0042624C MOV EDI,EAX
0167:0042624E JMP SHORT 00426259
0167:00426250 SHL DWORD [EBP-04],1
0167:00426253 CMP DWORD [EBP-04],BYTE +00
0167:00426257 JZ 0042629F
0167:00426259 MOV ESI,[0044A760]
0167:0042625F MOV EAX,EDI
0167:00426261 MOV EDX,EDI
0167:00426263 MUL EDX
0167:00426265 CMP ESI,EDX
0167:00426267 JA 00426273
0167:00426269 MOV EBX,EAX
0167:0042626B MOV EAX,EDX
0167:0042626D XOR EDX,EDX
0167:0042626F DIV ESI
0167:00426271 MOV EAX,EBX
0167:00426273 DIV ESI
0167:00426275 MOV ESI,[EBP-08]
0167:00426278 MOV EAX,EDX
0167:0042627A MOV EDI,EDX
0167:0042627C TEST [EBP-04],ESI
0167:0042627F JZ 00426250
0167:00426281 MOV ESI,[0044A760]
0167:00426287 MOV EDX,ECX
0167:00426289 MUL EDX
0167:0042628B CMP ESI,EDX
0167:0042628D JA 00426299
0167:0042628F MOV EBX,EAX
0167:00426291 MOV EAX,EDX
0167:00426293 XOR EDX,EDX
0167:00426295 DIV ESI
0167:00426297 MOV EAX,EBX
0167:00426299 DIV ESI
0167:0042629B MOV ECX,EDX
0167:0042629D JMP SHORT 00426250
0167:0042629F MOV EAX,ECX
0167:004262A1 LEAVE
0167:004262A2 POP EDI
0167:004262A3 POP ESI
0167:004262A4 POP ECX
0167:004262A5 POP EBX
0167:004262A6 RET
------------------------------------------------
2:
0167:00436B7E AND EBX,BYTE +3F
0167:00436B81 TEST BL,60
0167:00436B84 JNZ 00436B8E
0167:00436B86 MOV ECX,EBX
0167:00436B88 SHRD EAX,EDX,CL
0167:00436B8B SHR EDX,CL
0167:00436B8D RET
0167:00436B8E MOV ECX,EBX
0167:00436B90 MOV EAX,EDX
0167:00436B92 SUB ECX,BYTE +20
0167:00436B95 XOR EDX,EDX
0167:00436B97 SHR EAX,CL
0167:00436B99 RET
0167:00436B9A AND EBX,BYTE +3F
0167:00436B9D TEST BL,60
0167:00436BA0 JNZ 00436BAA
0167:00436BA2 MOV ECX,EBX
0167:00436BA4 SHRD EAX,EDX,CL
0167:00436BA7 SAR EDX,CL
0167:00436BA9 RET
0167:00436BAA MOV ECX,EBX
0167:00436BAC MOV EAX,EDX
0167:00436BAE SUB ECX,BYTE +20
0167:00436BB1 SAR EDX,1F
0167:00436BB4 SAR EAX,CL
0167:00436BB6 RET
0167:00436BB7 AND EBX,BYTE +3F
0167:00436BBA TEST BL,60
0167:00436BBD JNZ 00436BC7
0167:00436BBF MOV ECX,EBX
0167:00436BC1 SHLD EDX,EAX,CL
0167:00436BC4 SHL EAX,CL
0167:00436BC6 RET
0167:00436BC7 MOV ECX,EBX
0167:00436BC9 MOV EDX,EAX
0167:00436BCB SUB ECX,BYTE +20
0167:00436BCE XOR EAX,EAX
0167:00436BD0 SHL EDX,CL
0167:00436BD2 RET
custer 2000.9.3
相關文章
- Mybatis的註解入門2020-11-03MyBatis
- 一篇文章入門Netty2018-04-25Netty
- Kafka【入門】就這一篇!2019-07-17Kafka
- Zookeeper入門一篇就夠了2020-05-16
- webpack4.0各個擊破(7)—— plugin篇2018-09-02WebPlugin
- js入門(7)2020-12-16JS
- 千字分享|自然語言分析NLA2022-05-30
- 一篇文章帶你入門Zookeeper2019-01-10
- webpack4.x 入門一篇足矣2018-06-22Web
- 一篇文章快速入門React框架2020-06-04React框架
- Git【入門】這一篇就夠了2020-07-04Git
- 想寫一篇jvm的工具入門2020-09-15JVM
- Spring入門這一篇就夠了2019-06-23Spring
- 一篇適合入門的PID文章2024-10-16
- Hibernate入門這一篇就夠了2018-03-07
- MongoDB一篇從入門到實戰2020-12-27MongoDB
- 如何用 7 分鐘擊破 Serverless 落地難點?2022-12-05Server
- 暴肝兩萬五千字助你通關Servlet2022-03-01Servlet
- 一篇文章帶你快速入門createjs2019-01-11JS
- Java執行緒入門第一篇2018-12-22Java執行緒
- 入門Hbase,看這一篇就夠了2019-02-15
- Spring入門看這一篇就夠了2018-03-13Spring
- Mybatis入門看這一篇就夠了2018-03-12MyBatis
- 《ElasticSearch入門》一篇管夠,持續更新2020-06-15Elasticsearch
- 一篇帶你快速入門ansible和使用2020-09-23
- Shiro安全框架【快速入門】就這一篇!2019-01-06框架
- MASA Blazor入門這一篇就夠了2022-04-01Blazor
- Elasticsearch入門,看這一篇就夠了2021-05-17Elasticsearch
- jQuery入門看這一篇就夠了2021-04-18jQuery
- MySQL入門看這一篇就夠了2020-12-09MySql
- 三千字介紹Redis主從+哨兵+叢集2021-09-30Redis
- Struts2入門這一篇就夠了2018-03-10
- Python快速入門,看這一篇就夠了!2023-04-13Python
- 真的,kafka 入門看這一篇準沒錯!2021-01-13Kafka
- 一篇帶你入門面向介面程式設計2020-11-30程式設計
- 璀璨約會,破曉來襲!《光與夜之戀》“破曉測試”定檔4月7日2021-03-22
- [electron]終極奧義 五千字教程丟給你2018-09-18
- 三千字講清TypeScript與React的實戰技巧2019-07-26TypeScriptReact
- # 一篇文章帶你入門軟體測試2023-10-30