Download presentation
Presentation is loading. Please wait.
Published byPierce Fisher Modified over 9 years ago
1
EC312 Review
2
Rules of Engagement Teams selected by instructor Host will read the entire questions. Only after, a team may “buzz” by raise of hand A team must answer the question within 5 seconds after buzzing in (must have answer at hand) If the answer is incorrect, the team will lose its turn and another team may buzz in. No score will be deducted. No negative scores. Maximum score is 100. Once reached, that team will stand down for others to participate. Teams will earn all points scored at the end of game. When selecting a question, Teams must only select questions of different value, unless there are no others, but may be from different categories. All team members will participate and will answer questions Only one round - No Daily Doubles, Double Jeopardy or Final Jeopardy … and no partial credits!
3
Jeopardy! Numbers / C Transistors / Logic Pointers, Arrays & Strings Assembly and Memory Functions and Stack / Heap Buffer Overflow / Privileges 10 pts 20 pts 40 pts 60 pts
4
How many total bytes would be needed to store the following variables? int time_1, time_2, time_3; float PRT = 9.5; char mid_1, mid_2, mid_3; int score; Numbers / C 10 pts integers: 4 x 4 = 16 floats: 1 x 4 = 4 characters: 3 x 1 = 3 TOTAL = 23 bytes
5
In which direction does the arrow point on an NPN transistor? Transistors/Logic 10 pts Arrow points outward at the EMITTER (Not Pointing iN)
6
What is the address operator used to access the address of a variable? Pointers, Arrays & Strings 10 pts &
7
How many bits are represented in an address? Assembly and Memory 10 pts 4 bits per number, 8 numbers per address = 32 bits
8
True or False: The Heap grows from the top (smaller memory address) down (to larger memory addresses) making it grow towards the stack. In fact the stack and the heap compete for memory space and it is the programmer who must take care of the heap. Functions and Stack / Heap 10 pts True
9
What does the Linux command sudo do? Buffer Overflow / Privileges 10 pts Executes a single command as the root user!
10
Express the binary number 01011010 as a decimal number? Numbers / C 20 pts Ans= 64+16+8+2 = 90 10
11
Properly bias the transistor below: Transistors/Logic 20 pts Properly biased NPN
12
What would be the output of the code below? #include int main() { char phrase[] = “Military Academy”; strcpy (phrase, “Naval Academy”); printf(“%s\n”, phrase); } Pointers, Arrays & Strings 20 pts Naval Academy
13
Name the processor registers and their purpose: Assembly and Memory 20 pts eip (instruction pointer) – it holds the address of the next instruction the CPU intends to execute esp (stack pointer) – it holds the address of the top of the stack ebp (base pointer) – points to the first address right below the stack
14
What elements and in what order they appear on the stack during a function call from main? Functions and Stack / Heap 20 pts Function’s Variables Saved value of prior ebp Return Address Function’s Arguments Main’s Variables
15
Buffer Overflow / Privileges 20 pts What does setting the setuid permission on an executable program do? Whenever the program is executed it will behave as though it were being executed by the owner!
16
Numbers / C 40 pts Consider the code below. What is the exact output if the user enters 4 when prompted? Is 4 your favorite number? Navy
17
To what logic gate does the following Truth table correspond? Transistors/Logic 40 pts NOR Gate
18
What is the output of the program below? #include int main() { int salary[4] = {1000, 1500, 2000}; int j; for(j = 0 ; j <= 3; j = j + 1) { printf(“Salary %d is %d \n”, j+1, salary[j]); } Pointers, Arrays & Strings 40 pts Salary 1 is 1000 Salary 2 is 1500 Salary 3 is 2000 Salary 4 is 0
19
Consider the memory stack allocation below. What would be displayed by the command x/s 0x08048384 ? Assembly and Memory 40 pts USNA AddressDataASCII 080483840x55U 080483850x53S 080483860x4eN 080483870x41A 080483880x00null
20
Functions and Stack / Heap 40 pts Consider the code below where a break has been set at line 10. Fill the missing items in the stack? 1 void test_function( int a, int b, int c, int d, int e) 2 { 3 int flag; 4 char buffer[10]; 5 6 flag = 1000; 7 buffer[0] = ‘U’; 8 buffer[1] = ‘S’; 9 buffer[2] = ‘A’; 10 } 11 int main () 12 { 13 test_function(5,6,7,8,9); 14 } 0x550x530x410x00Name? 0xe80x030x00 Name? 0x180xf80xff0xbfWhat is this? 0x050x00 } what are these? 0x060x00 0x070x00 0x080x00 0x090x00 bfff818ebp_main 0x550x530x410x00buffer 0xe80x030x00 flag 0x180xf80xff0xbfprevious ebp 0x050x00 } function arguments 0x060x00 0x070x00 0x080x00 0x090x00 bfff818ebp_main
21
Buffer Overflow / Privileges 40 pts Consider the code below. What is the minimum amount of characters needed in the string alpha_code to change the value of a in the stack? float happy_times(int x, float y) { char alpha_code[7]; float sum; sum = x + y; Return sum; } int main() { int a = 77; float b = 3.14159; a = happy_times(a,b) + 1; exit(1); } alpha_code = 7 saved ebp = 4 Ret Add = 4 copy of x = 4 copy of y = 4 b = 4 “change value of a” = change 1 byte …so TOTAL = 7+4+4+4+4+4 = 27
22
Complete the code below to return the factorial of a number (hint: use for loop) #include int main ( ) { int number, counter; printf(“Enter a number and I will return its factorial:”); scanf( “%d”, &number ); //enter 2 lines //of code here printf(“The factorial is: %d \n”, number ); } Numbers / C 60 pts for (counter = number; counter > 1; counter = counter-1) number = number * (counter-1);
23
Transistors/Logic 60 pts For the logic circuit below, complete the corresponding truth table and determine the Boolean expression for the output X. ABCANDNORX 000000 001000 010011 011000 100000 101000 110111 111101 ABCANDNORX 000 001 010 011 100 101 110 111
24
Consider the code and the stack below. What would be the output of the program? #include int main() { int a = 11; int *a_ptr; a_ptr = &a; printf(“\nThe value of a is %d and the address is %x \n”, a, &a); printf(“\nThe value of a_ptr is %x and the address is %x \n\n”, a_ptr, &a_ptr); } Pointers, Arrays & Strings 60 pts The value of a is 11 and the address is bffff850 The value of a_ptr is bffff850 and the address if bffff84c esp0x50 0xf8 0xff 0xbf 0x0b 0x00 ebp
25
Consider the memory stack allocation below. What would be displayed by the command x/xw 0x08048384 ? Assembly and Memory 60 pts 0x414e5355 AddressDataASCII 080483840x55U 080483850x53S 080483860x4eN 080483870x41A 080483880x00null
26
Functions and Stack / Heap 60 pts Consider the code below. Give the different variable values at specific break points. 1 #include 2 int AbsVal( int number) 3 { 4 int AV; 5 if(number >=0) 6 { 7 AV = number; 8 } 9 else 10 { 11 AV = -1*number; 12 } 13 return AV; 14 } 15 int main() 16 { 17 int x, y; 18 x = -1; 19 y = AbsVal(x); 20 printf("The absolute value of the integer is %d\n", y); 21 } BreakpointxynumberAV Line 18?? Line 19?? Line 5?? Line 13? Line 20??? BreakpointxynumberAV Line 18garbage Line 19garbage Line 5garbage Line 131 Line 2011
27
Consider the code below. A break was set at line 15, at which time the command i r ebp returned the value 0xbffff800. The code was allowed to continue until it prompted its message. Would a segmentation fault occur if the user inadvertently enters 14 characters? Explain. 1 #include 2 void echo_string() 3 { 4 int count; 5 char entered_string[10]; 6 printf(“Enter a string: “); 7 scanf(“%s”, entered_string); 8 for(count=0; count < 10; count=count+1) 9 { 10 printf(“%s\n”,entered_string); 11 } 12 } 13 int main() 14 { 15 echo_string(); 16 } Buffer Overflow / Privileges 60 pts No. Although 14 characters would cause a byte to overwrite saved_ebp, the null would only replace 0x00, so the value does not change and therefore there is no access to memory outside that that was allotted and thus no SegFault.
28
Score Card TeamTallyScore
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.