I listed 13 heap exploits out there. Let's go back to class 19. Actually reference these notes a lot. That's taking too long to load. That makes me nervous about my Internet, but probably my Internet is now makes me want to pause and keep these notes active just in case my site is down. Okay, Cool. Class 19. Just a slow wanted to load. Everything else is going fence. This is so weird. Why would only one class be slow to load? What could be going on with className? Well, whatever I've got, I've got I've got two notes locally. Open Horses, sec index. This. So what I wanted to highlight out of these 13 distinct heap attacks, they actually like the one that we're working on right now is kind of house of spirit mixed with like a fast fin do of sorts. We actually know T0 cash do is, is identical like so or is easier. So we're doing a t cash to mix with that house of spirit. And in the process kinda feel our way through a fast been due. I'd like to maybe show you house of force. I'd like to mess around with the house of her jar, which is kind of this null byte corruption or whatever. These things have a certain flavor to them. So I think that the path we've taken here is actually the most empowering path in my opinion, in terms of getting your mental model right. Seeing how these problems are always kind of variations of the same type of flavor. I think once we look at what like the unsafe on link and safe unlink like these are basically this is the historical version and then this is the modern version of the same historical one. So like this is how it happened in 2001 and this is how it happens in 2021. Once you see the way this works, you'll kind of realized that, all right, What, where's have a very similar flavor to them. And at that point, I almost feel like if I just let you loose with the malloc dot c for each of the different libraries. You could reinvent most of these, if not discover your own. And I'll go a step further. Because I know it's a hard class, right? Like it's a hard class in some weird way. And but G lib C is probably the most polished of all the lib C libraries. And I have all of the like, you know, architectures and things like that that can be built on. If you can do it here, you can do it almost anywhere else. So I almost feel like once you kind of internalize the model of how this stuff works, you can probably pick up the implementation of malloc or even you can go to see sharper or Fortran or something or whatever, look under the hood to see how they handle dynamic memory allocation. And invent your own in that architecture to, you know, obviously not during the course, that the number of hours in the course or whatever, but in terms of my goals of winding you up and sending you off loose in the world. I think that this path shows you how the history of these exploits it come about and gives you all the tools you need to be able to jump in and see it in any different architecture. So because some architectures are a lot less secure than g lib C. So it's, I actually think we're kind of going up against the industry standard right from the beginning of all this stuff. But with the power of right what, where, and the understanding of just moving the instruction pointer, then you're equipped to be able to do this in any different context. I believe, like you always have to go and learn the syntax of context or whatever. But if you look at it abstractly, you should have all the pieces. So I think that I'm trying to kind of cover as many of these as possible by way of doing one really deep. That's my thought process. Okay, I don't know why. Oh, now classify unseen works, that makes me nervous. Right. Okie-dokie. Okay, so here's where we are right now. We learned about unsorted bins. We learned that actually I did a CTF problem. I don't remember when I think I did it on Wednesday. So maybe I told you guys this on Friday then if I ask for an unsorted been enough size, large enough size, then it will, I guess in the flowchart sense, it will actually do a malloc. It, it'll actually map a brand new space to see if I can find it on here. Justice system memory, remainder from West, partial allocate. What is textFile busy mean with patch and oh, by the way, text file busy. I think that means that you've got a process running that thing in the background while you're trying to patch off it. So you can delay, Kill your jobs or something. Because it's trying to edit the binary and it's, it's not having enough luck. Some chin find where it does this. Mark the victim then. Okay. Allocate via map. Here we go. This one. If you've got enough space that you asked for, it will actually just allocate a whole new chunk of memory. Which is kind of odd. When we get to the house, the force will show you how to kind of avoid that happening to you. But I saw a problem where you whole other segment and you had to like find a leak inside of your segment and get something else added to it or whatever. But nonetheless, where are we? We are understanding that an unsorted been makes a sort of circular, doubly linked list. I don't think I actually said the word circular before, but there's forward and backwards pointers. And when we free an unsorted been, it's going to point back to the main arena. And we can use that for our G lib c. That's what we know about it so far. We'll look at that in more detail when we get to the the unsafe unlink. But we also learned on Friday a bit the hard way that if this is adjacent to the top chunk, it gets reabsorbed into the top chunk. So we need to, if we're going to have an unsorted been, stick a little bit of junk after it so that it doesn't get reabsorbed in order to get the week. All right, cool. So here is what I will call the House of spirit. We want to manufacture a fake, unsorted been out of a bunch of fast bins. So we are an end. This will happen when we have the ability to make stuff, but we can't fully control the size like we can't be beyond a certain size. That happens a lot in code, right? Like where, you know, well, you can't ask for 9 thousand bytes or whatever, but You're going to ask for 90. So a lot of what you'll see when a CTF problem is trying to guide you to one of these 13 is they'll say, well, you can only get to mailbox and the sizes of your mailbox must be between one hundred and ten hundred or something like that. And so your job is to figure out, well, given those weird constraints, which of those 13 Can I pull off? That's kind of esoteric myths of CT effing. But it's really more about trying to emphasize this one particular attack. And so, yeah, in terms of that model that I showed you guys before, this thing, the number of attacks that you can pull off is essentially how big is your quiver? How many tools do you know in each of these three-dimensions? How will you, how will you exploit things? How will you control program flow? How are you going to write data? At? The more of these you know, the more powerful your, you know, the exponential growth of your exploit knowledge tool set is. And the good news is that you can learn them linearly in order to get that exponential growth with that cubic growth. So all that said, here's what we're gonna do with the house of spirit. It's called that because it's sort of ghostly. We're going to synthesize a chunk out of other chunks. All right, so the big idea is we're going to make a ton of small bins in a row like consecutive boom, boom, boom, boom, boom, boom, boom. Make enough of them. So that if I imagine having all of them considered one chunk, it would be considered an unsorted chunk when we go to free it. Because when we go to free it, it's going to check the size of that thing to decide. Am I putting this into the fast pins and putting this into T0 cash my putting this into unsorted been. So what I need to do is put a whole bunch of chunks in a row. Make sure that I cover enough space to be larger than the maximum T0 cash. But also more than I'm going to ask for so that I'm not adjacent to the top chunk. Then edit the size of the first small chunk using a right What, Where, but this time into the heap, which is the easier leak to get free. That small chunk that I've just edited it size so that G lib C thinks it's big and not adjacent the top chunk, so that it makes pointers inside of that space into the main arena. So your homework skipped kind of this part. In order to just give me these pointers. And we're going to do extra work to get those pointers because in ours we're only allowed make things up to size OX 70. So that constraint means that we're forced to have to manufacturer in unsorted been in order to get that g lib C. Then the rest of it will match exactly what we did on Friday. Show the contents of that chunk to get main arena plus x, Subtract from the beginning of D lib C to get the lib C dot address, then make a right what, where to replace the free hook. System and then just write bin SH into some chunk and execute. Okay, that's the thing we're going to try to pull off. Now you can watch me fumble around, try to do it live with the slight variations or whatever. I have a working exploit down here, but I'm going to try to not reference it to too much. So forgive me in advance for fumbling, but that's the goal. Questions on on the task. All right, let's see how it plays out. So let's I like starting with some of these utilities. So baby Jeep, malloc free show. Let's kinda grab everything up to here. So the first thing I need to do, so and I like doing this back when your stack smashing everything else like that. I want to write out like stages or whatever. Stage 1, get a heat leak. I can later overwrite the size of my faked unsorted been. So just any heat leak will do. So. How am I going to get heap leak? Well, I'm going to malloc into index 0, something of size. I think I can go as low as 28 would be fine or whatever. Then I'm going to free that thing. And then I'm going to free it again. Can I actually, can I just free it and show it? Let's see. Let's see if that works or if I need to free twice. I think I need to free twice. Okay. Oh, yea, yeah. I know I need a free twice. Why do I need to free twice? Because fast bins are going to point to me. And the last thing in the fast been the address it has is the 0 address. So I free twice because I need the linked lists to like I need the one that I get back or the one that I'm holding have an address in it. And that's so that has to point at least at one more thing. So by frame twice and kind of having a point to a, I'm ready for the right what, where and I get the address back out. One other thing I noticed while I did that is that I wasn't printing my my PID. So that as I go to as I go to like GDB attach here, I want to know what to attach term. All right, so now let's go free twice. There we go. That very definitely looks like a leak. And I've got my process ID now, I could probably make this less verbose. I'm just ignoring this like dumb Python three thing. I should, maybe I shouldn't buy like it seems kind of probabilistic and I hate Python 3 and it just does weird stuff sometimes. So it seems like it's happening inside of potent tools, this error. You updated it, a new update came out. I realized when I tried doing check sac, it told me there was an update for bone tools. I could do that. Yeah. I'm not going to live. I might like, mess around that. Just just in case like I'm already risky enough. So I won't mess with my environment to too much like because that's actually something I think you guys are probably benefit from doing some of the patching or whatever else like because because there was at least three people over the weekend, it was like my LTD dash dash version is showing 2 to point 3 1 instead of 2.27. But I've done the patch off or whatever. And so like I think that after he did patch off, I couldn't access the binary. It says like no file exists when I try to run it. Interesting. Here's another hack I've done instead of Pat shelf, if, if like, if the patch off just isn't working, you can export LD library path equals and then put here the path to your fake to lib C. And if you had something before, you can keep the old one. And that'll just during that session, that's where it will look for the linker. And there might even be another one that is the G, the C version of that. I think I even have it in my notes somewhere. Okay. So that's something that is sort of maybe a little bit office hours? I did. Yeah. Okay. So we now have a leak. Handling leaks is annoying. So we know that we've got this like one dot just after the leak. So I think I'd have done this before where I say like, alright, raw league equals this thing. I need to say my leak will equal use 64 of raw leak. Raleigh dot, find One dot square bracket dot L, just eight by x 00. And then if I print hex of that week. So I just want this to look like a heap address. A bites like objects is required, not string. Oh my gosh, Python 3 drive me nuts. Because if I can't find anything that isn't precious beliefs. Yes. So that is a heap address. Looks good, ends in 260. That seems right. I could also just check this in GDB now, right? Like to see where my heap leak is happening. By the way, if that was too faster or whatever. Like I I, I had one extra notation in my head that looks like this. T cash points to a, points to a, points to 0. Just T0 cash Wednesday, Wednesday. This is what I have in my head for the linked list that is linked to itself after the double free. And so we're going to use this both for leak and the right what, where. Because by if I reallocate a and add something else, then I can kind of add this like other address to the back of that. And then I will be able to write what I want, where I want. Okey-dokey. Next up. I'm now going to say, I think it would say R-dot interactive here. So it just kind of goes into that mode. I'm going to start up TMax, Python three exploit dot p-y. Okay? So we've got 20 to 40, we have that leak and all I want to do here, control BC, oh gosh, control BC. I want to connect to that thing. I just forgot what it was already like. Goldfish brain. Attach Ctrl V N 20 to 40, control the n 22. There was like one day that we had our GDB like super well aligned vertically or horizontally or whatever. And now I'm back to like, Yeah, the power of first impressions, The off power first impressions. So what am I doing here? I am doing this. This is the leak that I had. I go back and look at it. I get 55, 64 D3 CF 20 to 60. And sure enough, there's my 20 to 60. And that's the link I've week of God. Okay, that's valuable to me to know. In this iteration I know the exact address that I have leaked. And so when I go to write what, where, and other places, I will, you know. Need to bear in mind that all of my addresses will be relative to that. Okey-dokey. But this is another question that shows up in my DMs all the time. Like, how do you calculate your offsets or how do you know where your stuff is or whatever else? This is how I grab my leak and then I debug and real-time. And my right where is it? I know that with PIE it will change every time. But I'm going to calculate some offsets from this thing. And then, and then we'll play background. Now, given that we're interactive here, we can actually keep going for we can leave and go back to our exploit script. So remember the plan. We've now accomplished phase 1 of our plan. Actually, it's not even written in here. We have now prepared for phase 3 by getting a heap leak. But now the rest of the plan is make a whole ton of small bins in a row. All right, so let's do that. Control t to the n, and we're back. Okey-dokey. So let's try it out. All right, so I likes going into interactive. That was cool. I like having my PID, I like having my heap week. I might actually call it heat leak because we're going to get another week. So I'll call this heat. All right? And, and, you know, we've now validated. We've now validated. This is the beginning of the user controlled data in chunk at index 0. Okay? Now, what's the next part of this plan? I need to now make a whole bunch of these in a row. And my goal is actually how many in a row should I make? So question one, how many rows should I make? Any ideas for how we might tackle that? I'm limited to get a kit. I would try and get a lib C leak. Yeah, I definitely need a lib C leave because without the Liberty League, I don't know where free hook is or malloc look is like actually. So that's a good question. Just in terms of the flowchart of it. I made a heap leak. That's fantastic, right? What does that teach me? Essentially nothing. Why? Because we looked at the visit that heap and had nothing interesting. Like all it had was my data that I'm controlling. And it's not, and it's randomized away from anything else. So like the heap leak essentially has no interests to me in terms of leaking other interesting data from it. But it might, it might be that I get lucky. Like. Just like we're doing printf vulnerability and I can start reading the stack. It's possible that I could read that stack and find a G. Let's see, week from the stack. It's possible that in a real program, when I'm, when I actually get a use after free like that in Chrome, that heap has all sorts of other junk in it already. So it's very likely that once I can read the whole heap, that I probably should read the whole heap, make a predicted offset and, and just grab some data out right now and not even bother with all this other stuff, right? So, so that's actually a good point that in the wild, I probably do have stuff on the heap that I could read at this point, but now in this controlled environment, we definitely do not. So we need a manufactured you see it? Okay. So question, how big does my fake chunk have to be? Like in your homework? How big did you have to make it before you were out of the tea cash and smaller and making an unsorted been. Well, it's gotta be greater than hex, 40 away. It's gotta be bigger than hex for 08. Who can tell me how big hex 40 8 is? 1, 0, 0, 0, 3, 2, 1. I had it. I had it in the calculator already. Got it, got it, got it. I took the once popular game 2048 and divide it by two and then added eight. So yeah, alright, so 1032. Alex's pharmacy. Sorry, Alex. I appreciate the camera being on that. Yeah. Refills for everybody. But an article on camera we'll get to more accurately. Here you go. There you go. Stretch your legs. All right. If we have a 1032, how big is? So actually script. I'm just gonna go into Python. Python to like them. All right, 1032 divided by 79 of these things. How big a 670? That's 112. 112 times nine is 1008. Alright, so I need at least 10 of these full size like maximum size chunks before I'm bigger than what I need to request, which is 1032. And then I want more past that. So I think I'd like at least one more pass that. So if I'm going to ask for something of size sensory actually and for await is still t cash. So I need to ask for like 16 more than that. So 1032 plus 1601048. Look at them. So I guess that's hex for ten. So I'm going to ask for 1048. It looks like ten of these will cover me and an 11th will be like protecting you from the T0 cash. I think 11 is the minimum I need. You guys follow me on the math of that. And this is because our malloc sizes were restricted to a small size, right. So that's where I had to create like ten or 11. Yeah. Invisible flow chart to work. Yeah, Really it. Let's look at the main.cc of, of this assignment here. And you guys might have figured this out from like Deidre and real life or whatever. But if the size is bigger than hex 70, bigger than or equal to hex 70, it will reject me. So the biggest I can ask for will be hex 68, but then I can add 8, like it adds eight to that, so it makes 70. And so I need to manufacturer enough space to fill out something bigger than hex for 08 and plus 16. So I need something bigger than 1048. And then the flowchart says I also can't be adjacent to the top chunk, so I need like one more beyond that. So my integer division was not quite the right way. I need like ceiling plus one. So I think a bare minimum of 11 of these maximum size chunks is the least I can get away with if I'm asking for 1048 sized something. Okay. So let's do it. Now. Here's another thing. If you take a look at that. Chung guess is an array of 10 character pointers. So my index is capped at 10. That's another little subtlety here. If I, if I, you know, it just seems an index to put my pointer is that it doesn't mean I can't reuse the same index, but it does mean that like I can't make my loop where I fill out 11 of these and store each of those pointers. So we need to store a pointer to the first one and then ask for 10 more in some other index that I won't use later. So just in terms of being able to get access to those pointers, again, this is my method for getting access to that is, there are going to store it for me and let me reference it by index. So here we go. So we decided from our little math session that we decided we need at least 11 hex 70 sized chunks to give us enough room. Or a 1048 sized chunk. And one more beyond. Misspell them off. All right, So here we go. Let's try. Can you guys see that at the bottom of the screen? Like it's starting to Zoom. So we're going to malloc in the index one, OX 68, dummy data. And then I'm going to make a little for loop and do 10 more of these. And I'll put them all into index two. Index 9, really? Yeah, I'll just fill that all up. Put dummy data. Okay. So then well, okay, so let's just look at what that looks like. So this is going to make 10 chunks in a row, 11 chunks in a row that are all small. Ad I'm going to imagine editing the very first one, somehow changing its perceived size, freeing it, and causing an FP pointer to show up inside of it at a place where I can predict, which will be my Index 1. All right, Let's try it. Okay, it worked. 3158 is my process ID and control will be n. 3158 is okay. We've got a lot of dummy data here. I do not see a top chunk. I do not see a top chunk, which means it's not showing me enough data. So I'm going to type of is hex 1000 that now we can see the top chunk. I want to scroll around and kinda see where my leak was and where I need to edit. And so I can get like an offset from my lead to the place that I need to edit to control b square bracket. Now we're going to scroll on up. We've got a bunch of these things. Here is my leak. This is the first of my big chunks that I want to edit. So if my leak is to hear, I want to add 8, 16, 24, 32, maybe 40. I might have to mess around with either 32 or 40 to get to the correct spot here to edit this thing. All right. Now, You can trust me for a second that that will eventually happen. What will eventually edit this to be a larger size? When we go to the V is we want to see it pretend like all of that is one giant chunk. And then there's one extra one at the bottom, near the top to insulate us. And if this were not a T cash to T0 cash is easier than fast spin because T0 cash had less security checks. If this was a fast Ben. We would need our LinkedList to be AABA. And when we do this right, what, where we would need to make sure that just before we start writing, there's a fake size written into here. Well, since we control these purple values, we could totally place a fake size there. So even if this was a fast been do, we could get around that security check also by just changing my purple data when I began this thing. Just an observation that fast been dupe is a little bit harder than T0 cash. But all that's extra hard is that you just need to like synthesized this little, this little thing. Every time you do your write what, where you're only allowed to write into places where you have some valid size chunk somewhere before your target. So we could do that if this were not a T cash do, but I made it T cashes to like make it one exploited at a time or whatever else. But, but there's a large number of these extra little security checks. And this is why earlier in the class I described what we were doing. The stack smashing was like learning algebra one. And what we do when we get to the heap is kind of like doing integration by parts with trig substitution. It's all the same math, but there's just more and more junk in the way between you and the Algebra 1. And so you just have to bear in mind all of those little security checks and synthesize it so that all the, all the checks pass and stuff like that or whatever else. Okay. Here we go. So this is good. I'm happy with this. 32 or 40. So, so now we need to do a write what, where, and our job is to overwrite this 71 and make it line up just right. And I might have to be careful with this. It might even be as low as 24. And I write here and I put some zeros in there and do some other junk. Like it might be weird. This right? What, where they need to do next. So let's try it out. Cu Control D, Control D and exit control D. Ok. Now, right, What, where? The first right up there, ready to write, well, where's the next goal? Overrides the OX 71. In order to make that chunk look giant. This is the house of spirit concept. All right, so how are we going to do that? Well, to pull off our right, what, where we need to malloc OX 2864 of our heap leak. Plus. Now, I'm just gonna be careful with this. I'm editing an address that the T0 cash is going up. Give me And does the T cash pointed like the off by eight part or not The off by eight part. I think it points to the right spot. And then it fills in some junk before that. So I think I can do I'm here and I want to go over there. I'm going to try 40. We'll try 40. So this is me overwriting into a the other address. Then. I think I malloc that again. This by the way, is going to be superstition on my part. I think that one of these two values, legit doesn't matter, but I just simply write the same value twice that same exact address. And finally is my right What, Where? All right, I'm pretty sure that this is going to be all terribly wrong. But now I want to make this, instead of 71, this should be where that like 71 is. Now I want to make it whatever we decide. 1048. It's 1048, a multiple of 16. I don't think it is. It is it 1024? Know. It's not a multiple of 16. So I'm going to ask for 10, 56. Alright. If this worked, then we will have overwritten the size of that thing. It will treat all of those chunks is one big, large thing. Will have one extra chunk at the bottom and the top chunk. That's spelled wrong. So you have malloc spelled wrong on that one. Ooh, I like the way I spelled it. They'll mailbox is pretty cool. I thank you. All right. Let's try it. All right. Well, we didn't have an error, so that's good. 3708, GDB 37 awaits, attach, attach attention. 378 viz. Ox at 1000. That's not good. It's not good. I want to see a top chunk down at the bottom. That's one thing that's good is that it does in fact, you know, maybe, maybe I'll make it 1200. Yeah, I know. I've definitely corrupted something. Let's go see what I corrupted. Okay. So that's for 20. Cool. I think it should probably be 21. Like I think it should have been US flag. It does think that this is part of it. So it might be that I need to like. Well, this is kinda work out, right? Like so I was here, I targeted that. I definitely didn't overwrite, await. It kinda overwrote dummy. That's okay. Like it overwrote like a new line character at the beginning of my dummy data. And I think that's fine. I'm going to try it is like for 21 and maybe add one more chunk to the back and see if that does the job. So this looks right. I'm a little bit nervous about this green right here, like. But I think that, that green right there is actually what happens in an unsorted been when it's been like is considered that I think that's because of this one. So I'm going to edit, edit this to 421 and add one more chunk at the back. That might be being not careful enough scientifically. So maybe I should do this in two chunks, but it's 11 o'clock, so I'm going to add the one there and an extra chunk and see if that works. But if I had more time, I would do both like separately so I can know whether or not it was my size or whether or not it was my previous in US flag Control D N, exit Control D. 20. People are dropping like flies. That's fair. That's fair. Okay. So let's go. So instead of 10, 56 will ask for 10 57. Unless you said one more here. Thirty nine forty seven thirty nine forty seven thirty nine Forty-seven. Forty-seven. Forty-seven. Forty-seven. Is OX 1100. Still not seen a top chunk. All right. So we made more room. We adjusted where we're going. Let's see what they are for 20, whether or not our 421 did the job. So look, look at that. It's not green as predicted. For 21 is cool like that. So I have in my mind that if I subtract 16 from my target, and then just fill out some 0 bytes and then put in the 421 that I might have a little bit more luck. So that what gets written into like it's memory or something like that might be a little bit off. Like I'm not sure what got corrupted. But I think if I like target a little bit earlier and skip, maybe. So. Because I'm because I'm pretty sure it lost the top chunk. I get it no longer. Maybe I just need to ask for even more data. Like but this is kind of, this is kind of what it always feels like. You know, like just do a bunch of stuff. So I might, I might make my target 16 less 2424 and add like 6400 times two. I've got that in my head to see. Maybe I'm crazy. I might have just broken to anything. So 40 137, 40 137. I can get that GDB leak then we'll call it a 40 137. Attach 40 137. Say 37 or 27. Is OX 2000 north of Boston. Maybe I look at my exploit script and see. But oh, well, was that okay. So for 21, still there. Fine. Or 21 still there. Oh, oh, I corrupted this. This is no longer pointing at the right place like that's now got a 78. So think it was onto something by like going by targeting here, overwriting something here. Which is changing this. My right, what worked. But I've corrupted sudden, oh, when I've just ran out of time, CS lab gives me one hour to get it right. So let's take a look at the exploit that I had that did work and see what concepts are there that maybe I got right or wrong. I did two of these, but I know that was just sort of a dummy mistake or wherever. Then asked for this and then I did 12 of those. So that's fair than this plus 112. So if these were size 64, so 112 is 128 minus 16. So that's roughly in line. I've got one of these here, not there. That's a little bit interesting. So maybe if I, if I target off by eight, do one of these or something like that. Then do the free incomplete. But I now have lost my exploit script roughly where I was in terms of my one hour. So nonetheless, this, this process is the idea and roughly how it feels to do it in real life. Which is to say, okay, here's I'm trying to do off-by-one off by one off by one off by one. Yeah. Okay. I got it. Yeah. And then you move on. Let's say okay, Got my Liberty League. Now it doesn't work on the server crap what whatever you got wrong again and back and back and back up like so that's why. That's another reason why halfway through the course is like, you know what? At some point it's actually just you and the debugger and your journeys together because it's always going to be like roughly correct, but reality takes just debugging a lot. And that's the difference between engineering and practice and engineering in the textbook. Yeah. So, okay, cool. Yeah, good. That's the introduction to house of spirit, where we're synthesizing chunk. It would've been satisfying to get the week to say, okay, now we have a G lib C week. We are up to some minor adjustments of this number and this adjustment or whatever. In order to get to the right size here, I asked for a little bit more. So maybe I could maybe like the size of the thing. I'm asking for matters. So I don't know. I'd **** around with that probably for another 20 minutes. And I can't again, here's the results of me having it around with it in the past. So which it did take a while before the fighting around kinda like I got my week finally. So that's that side. I was just kinda hoping I could recapture lightning in a bottle. Okey-dokey. Thank you. And I will talk to you Wednesday. I can just get some help and the patch off real quick. Yeah. Did you end up That is not right here. So I have like, if I go to this is where we have everything stored, it's just I don't know how to change these statements to be what I need them to be. So I go to C. C, I see. So I need to change the full thing. This is like the full statement. I don't know how to change it to what I needed to be to actually link it. Okay. So one, the linkers name. So one the folder that has your stuff is g. Let's see, I did damage ellipse the lib C. So then you can get rid of the 2.27 or whatever. And and and I think that's it. You can just call, I think you just have tilde a G lib C, O and it will just link all that. Yeah, I should do that one now for the interpreter, Again, it's just in the Tilda g lib C folder and the name of the interpreter is what? Ld dot S. So to me I think, yeah, let's go with that one. C-h bond. You might need to CH mod that, that G lib C folder too. Maybe like the things inside of a star. Yeah. There you go, every girl, let's just see if it works now. Or wait, 0, 0, 0, 1, 0, 0 or not poor, but okay. I can't do that. Maybe you can. Yeah. Go ahead. Okay. Yeah. Those aren't just want to make sure, you know, a double for heat, you double free. Okay, cool.
Andy Novocin's Personal Meeting Room
From Andrew Novocin April 26, 2021
18 plays
18
0 comments
0
You unliked the media.