Analysis of a Trojan sample

Source: Internet
Author: User

It's free. Let's take a look.ODLoad directly as follows:

00414000> $ E8 00000000 call 00414005
00414005 $ 5B pop ebx // locate the code
00414006.81EB05024000 sub ebx, 00400205 // The code segment length, followed by a variable
0041400C. 64: 8B3D 30000000 mov edi, dword ptr fs: [30] // FS [30]-> PEB, locate kernel32.dll
00414013. 8B7F 0C mov edi, dword ptr [edi + C] // if you have written shellcode, you should be too familiar with it here.
00414016. 8B7F 1C mov edi, dword ptr [edi + 1C]
00414019. 8B3F mov edi, dword ptr [edi]
0041401B. 8B7F 08 mov edi, dword ptr [edi + 8] // Save the kernel32.dll base address in edi
0041401E. 89BB C2034000 mov dword ptr [ebx + 4003C2], edi // Save the edi value in a global variable
00414024. 8BF7 mov esi, edi // send it to esi
00414026. 0376 3C add esi, dword ptr [esi + 3C] // locate the "PE" Field of kernel32.dll
00414029. 8B76 78 mov esi, dword ptr [esi + 78] // locate the export table
0041402C. 03F7 add esi, edi // obtain the absolute address of the export table
0041402E. 56 push esi // save
0041402F. 8B6E 18 mov ebp, dword ptr [esi + 18] // obtain the number of export functions. To ebp
00414032. 8B76 20 mov esi, dword ptr [esi + 20] // obtain the relative offset of the export function to esi. Pay attention to the esi value and the above changes.
00414035. 03F7 add esi, edi // obtain the absolute address of the function symbol table
00414037. 33D2 xor edx, edx // Reset
00414039> 56 push esi // save esi again. Here is the absolute address of the function symbol table.
0041403A. 8B3E mov edi, dword ptr [esi] // obtain the first exported function
0041403C. 03BB C2034000 add edi, dword ptr [ebx + 4003C2] // add the base address of kernel32.dll to obtain the absolute address.
00414042. 8DB3 87034000 lea esi, dword ptr [ebx + 400387] // esi points to the GetProcAddress function, which is the function to be searched
00414048. B9 0F000000 mov ecx, 0F // ecx counter, the length of the function to be searched
0041404D. F3: A6 repe cmps byte ptr es: [edi], byte ptr> [esi] // repeat the function of kernel32.dll by byte until it is determined that it is the API to be searched
0041404F. 75 06 jnz short 00414057 // not found, skip
00414051. If 5E pop esi // is found, the absolute address of the function symbol table is displayed.
00414052. 8BD6 mov edx, esi // assigned to edx
00414054. 5E pop esi/pop up esi again. Here is the absolute address of the exported table.
00414055. EB 11 jmp short 00414068 // then jump
00414057> 5E & nbs

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.